FastMember 列顺序保存

FastMember column order preservation

使用 TypeAccessor.Create 时,FastMember 似乎总是 return 按字母顺序排列的列列表。是否可以告诉它保留 class 中列的顺序?

例如:

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

将 return 来自 GetMembers 的 A 列然后是 B 列,如果可能,我想获取它以保留 B 然后是 A 的顺序。

看起来 Evk 是正确的,它不能通过标准 API 真正完成。为了完整起见,我将把这个作为答案。

我创建了一个 fork of this project with column order option and added a PR 到原始存储库。添加了 OrdinalAttribute 以指定列顺序。

序号属性可以如下图所示使用:

        public class ObjectReaderWithDefinedColumnsOrderType
        {
            [Ordinal(1)]
            public byte C { get; set; }
            [Ordinal(0)]
            public int? D { get; set; }
        }
  • IDataReader ObjectReader.Create() 中返回的对象将根据定义的属性具有列顺序。
  • 如果属性未在源中定义 class 则使用字母顺序。
  • 如果两个字段具有相同的序号值,则使用字母顺序。
  • 如果仅为某些属性定义了属性,则列按序数值排序,然后按字母顺序排序(没有属性的属性被视为 -1 序)。

您可以立即使用我的 for 或等到 PR 与原始存储库合并。