Comments 11
рослин уместила 12 булевых свойств и одно байтовое, в единственное ushort поле.
12 бит плюс 8 бит равно 16 бит?
а точно вы хотите класс, а не структуру?
Выглядит полезно.
Но вопрос порядка полей? при интеропе он очень важен.
К сожалению это нельзя контролировать, однако вы можете заранее создать поля в нужном порядке, а потом через FieldName = nameof указывать уже на существующие поля
Пример того как это можно сделать https://github.com/Asaicraft/PropertyBitPack/blob/master/PropertyBitPack.Example/PackedStruct.cs
Я имел в виду порядок бит.
ааа, понятно, увы и ах, на данный момент это не возможно, мб следует добавить такую фичу
Порядок бит будет соответствовать порядку свойств в классе/структуре. Source generator обрабатывает их последовательно по тексту кода и назначает биты тоже последовательно.
Так бы сюда просится свойство атрибута, определяющее порядок/номер бита, но ту как-то еще дополнительные проверки на коллизии надо прикрутить тогда и, желательно, чтобы они срабатывали прямо в IDE. Кстати, это позволит решить проблему с пропуском бит, которые сейчас решаются только созданием фейковых полей, насколько я вижу. Минус в том, что и так все довольно перегружено выглядит (модификаторы partial плюс атрибуты с параметрами), так и еще и этот параметр добавится.
Обычно для этого используют enum с аттрибутом [Flag]. В чем отличие/преимущество предложенного подхода?
PropertyBitPack: Упаковка свойств в поля