Сохранение порядка столбцов 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 будет объединен с исходным хранилищем.