相关疑难解决方法(0)

`Type.GetProperties`属性顺序

精简版

Type.GetProperties它返回的集合的状态的MSDN文档不保证按字母顺序或声明顺序,但运行一个简单的测试表明,它通常以声明顺序返回.您是否知道具体情况不是这种情况?除此之外,建议的替代方案是什么?

详细版本

我意识到Type.GetProperties状态的MSDN文档:

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

因此无法保证方法返回的集合将以任何特定方式进行排序.根据一些测试,我发现相反的返回属性按照它们在类型中定义的顺序出现.

例:

class Simple
{
    public int FieldB { get; set; }
    public string FieldA { get; set; }
    public byte FieldC { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Simple Properties:");
        foreach (var propInfo in typeof(Simple).GetProperties())
            Console.WriteLine("\t{0}", propInfo.Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Simple Properties:
        FieldB
        FieldA
        FieldC
Run Code Online (Sandbox Code Playgroud)

一个这样的情况,这只是略有不同的是当有问题的类型的父母也有属性时:

class Parent
{
    public int ParentFieldB { get; set; }
    public string ParentFieldA { get; set; }
    public byte …
Run Code Online (Sandbox Code Playgroud)

c# reflection

23
推荐指数
4
解决办法
9257
查看次数

标签 统计

c# ×1

reflection ×1