FastMember列顺序保存

gmn*_*gmn 5 c# reflection fastmember

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

例如:

var testClass = new { B = "1", A = "2" };
Run Code Online (Sandbox Code Playgroud)

将从 GetMembers 返回 A 列,然后返回 B 列,如果可能的话,我想让它保留 B 列然后 A 的顺序。

dya*_*nko 5

我使用列顺序选项创建了该项目的一个分支,并向原始存储库添加了一个PR 。OrdinalAttribute添加以指定列顺序。

可以使用序数属性,如下所示:

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

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

  • @Martin,是的,它已合并到 master 中。 (2认同)

gmn*_*gmn 2

看起来 Evk 是对的,但它实际上不能通过标准 API 来完成。为了完整起见,我将保留此答案。