如何将类型FieldInfos/PropertyInfos作为MemberInfo数组按照它们在类中布局的顺序获取?
class Test
{
public bool First { get; set; }
public int Second;
public string Third { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 27
http://msdn.microsoft.com/en-us/library/ch9714z3.aspx
GetFields方法不按特定顺序返回字段,例如按字母顺序或声明顺序.您的代码不得依赖于返回字段的顺序,因为该顺序会有所不同.
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;}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5577 次 |
| 最近记录: |