Сохранение порядка столбцов FastMember

При использовании TypeAccessor.Create FastMember всегда возвращает список столбцов в алфавитном порядке. Можно ли сказать это, чтобы сохранить порядок столбцов в классе?

например:

var testClass = new { B = "1", A = "2" };

вернет столбец A, затем B из GetMembers, я бы хотел, чтобы он сохранил порядок B и A, если это возможно.

1 ответ

Решение

Похоже, что Evk прав, и это не может быть сделано с помощью стандартных API. В интересах полноты я оставлю это в качестве ответа.

Я создал форк этого проекта с опцией заказа столбцов и добавил PR в исходный репозиторий. OrdinalAttribute был добавлен для указания порядка столбцов.

Порядковый атрибут может быть использован, как показано ниже:

        public class ObjectReaderWithDefinedColumnsOrderType
        {
            [Ordinal(1)]
            public byte C { get; set; }
            [Ordinal(0)]
            public int? D { get; set; }
        }
  • IDataReader объект вернулся в ObjectReader.Create() будет иметь порядок столбцов в соответствии с определенными атрибутами.
  • Если атрибут не определен в исходном классе, используется алфавитный порядок.
  • Если два поля имеют одинаковое порядковое значение, то используется алфавитный порядок.
  • Если атрибут определен только для некоторых свойств, то столбцы сортируются по порядковым значениям, а затем в алфавитном порядке (свойства без атрибутов рассматриваются как -1 порядковый).

Вы можете использовать my прямо сейчас или подождать, пока PR будет объединен с исходным хранилищем.

Другие вопросы по тегам