Type.GetCustomAttributes <tattribute>以随机顺序返回自定义属性</tattribute>

时间:2013-12-14 11:08:00

标签: c# .net visual-studio reflection visual-studio-sdk

请考虑以下代码:

[AttributeUsage(AttributeTargets.Class)]
public sealed class SampleAttribute : Attribute
{
     public String Name {get;set};
     public SampleAttribute(String testName)
     {
           Name = testName;
     }
}

[SampleAttribute("A")]
[SampleAttribute("B")]
public class Test
{

}

var attributes = typeof(Test).GetCustomAttributes<SampleAttribute>();

不幸的是,方法 “GetCustomAttributes” 会以随机顺序返回属性。

例如,以下代码将在每次运行应用程序时打印不同的结果。

foreach(var att in attributes)
{
    Console.WriteLine(att.Name);
}

按时,首先是“A”,然后是“B”,反之亦然。

我的问题有解决办法吗?

我不会添加诸如订单之类的列或类似的东西,我想解决问题。

环境:.NET 4.5.1,Visual Studio 2012 Update 3 SDK,C#5。调试和发布模式。

1 个答案:

答案 0 :(得分:3)

我认为文档中没有任何内容可以保证以任何特定顺序返回自定义属性。如果您需要有序属性,请在属性类中添加Order成员。