FastMember列顺序保存

时间:2016-11-16 09:25:12

标签: c# reflection fastmember

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

例如:

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

将从GetMembers返回A列,然后返回B,我希望保留B的顺序,然后保留A的顺序。

2 个答案:

答案 0 :(得分:2)

看起来Evk是对的,它无法通过标准API完成。为了完整起见,我将此作为答案。

答案 1 :(得分:0)

我使用列顺序选项创建了该项目的fork,并向原始存储库添加了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与原始存储库合并后。