C# 按原始顺序获取 FieldInfos/PropertyInfos?

2023-12-29

如何按照它们在类中的排列顺序获取类型 FieldInfos/PropertyInfos 作为 MemberInfo 数组?

class Test
{
    public bool First { get; set; }
    public int Second;
    public string Third { get; set; }
}

http://msdn.microsoft.com/en-us/library/ch9714z3.aspx http://msdn.microsoft.com/en-us/library/ch9714z3.aspx

GetFields 方法不按特定顺序(例如字母顺序或声明顺序)返回字段。您的代码不得依赖于返回字段的顺序,因为该顺序会有所不同。

http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

GetProperties 方法不按特定顺序(例如字母顺序或声明顺序)返回属性。您的代码不得依赖于返回属性的顺序,因为该顺序会有所不同。

您需要自己定义顺序,也许使用属性:

class Test
{
    [Order(1)] public bool First { get; set; }
    [Order(2)] public int Second;
    [Order(3)] public string Third { get; set; }
}
...
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, 
    Inherited = true, AllowMultiple = false)]
[ImmutableObject(true)]
public sealed class OrderAttribute : Attribute {
    private readonly int order;
    public int Order { get { return order; } }
    public OrderAttribute(int order) {this.order = order;}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 按原始顺序获取 FieldInfos/PropertyInfos? 的相关文章