3.3Kпросмотров
12 июля 2025 г.
Score: 3.6K
Marshal.OffsetOf С помощью этого метода я в BECS нахожу где фактически находится поле в структуре, в которое я хотел бы записать данные. Я это использую в кодогене, когда я точно знаю название поля и хочу вписать туда данные, но использовать рефлексию для этого нет никакого желания. Работает примерно так: var offset = Marshal.OffsetOf(type, field.Name); codeGenOutput.Add($"var addr = (byte)_addressOf(ref obj) + {offset};"); codeGenOutput.Add($"(({objType}*)addr) = new SomeStruct(...);"); В итоге получается, что мы просто записываем данные в структуру obj без рефлексии и нам не важно приватное там поле или публичное. #unsafe #fieldoffset #marshal
3.3K
просмотров
671
символов
Нет
эмодзи
Нет
медиа

Другие посты @unsafecsharp

Все посты канала →
Marshal.OffsetOf С помощью этого метода я в BECS нахожу где — @unsafecsharp | PostSniper