Type.GetFields () не возвращает поля в определенном порядке, но я хочу отсортировать их по порядку объявления. Как я могу это сделать? Я не видел свойства index в FieldInfo или чего-либо подобного.
Мотивация: Я хочу реализовать решение для битовых полей, подобное тому, которое есть в в этом ответе , но, как уже упоминалось во втором комментарии, порядок не гарантируется.
РЕДАКТИРОВАТЬ: уточнение - я не хочу создавать этот код, чтобы полагаться на этот порядок. Я хочу создать этот код для анализа существующих двоичных данных, которые уже имеют определенный порядок.
РЕДАКТИРОВАТЬ 2 (пост-ответ): Я выбрал ответ, который полностью отвечает на вопрос и который работал должным образом в моих тестах, но, как примечание, решение с битовыми полями проблематично:
При чтении значения из битового поля вы получаете целое число без знака (некоторого размера), но затем вы не можете привести его должным образом в соответствии с фактическим типом поля (byte, bool, int), который вы получаете во время выполнения из FieldInfo. Вы можете сделать это с явными условными выражениями во время выполнения (if type.Equals(typeof(bool))
и т. Д.), Но это немного уродливо.
В итоге я использовал C ++ / CLI, что значительно упростило эту задачу.