FastMember列顺序保存

本文关键字:保存 顺序 FastMember | 更新日期: 2023-09-27 18:18:04

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

例如:

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

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

FastMember列顺序保存

我创建了这个项目的一个带有列顺序选项的分支,并在原始存储库中添加了一个PR。添加OrdinalAttribute以指定列的顺序。

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

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

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

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