0
考慮以下代碼:Type.GetCustomAttributes <TAttribute>回報自定義屬性按隨機順序
[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.調試和發佈模式。
或者如果實際順序無關緊要,無論順序是什麼,每次都需要相同的順序,通過已有的東西(例如'Name')排序 – hvd
謝謝,是的,對了,但我沒有說這是一個.NET問題。有沒有解決方案或設置或任何其他的東西來解決基地 –
@YasserMoradi問題有什麼問題?當您查看結果中項目的順序時,無法保證其結果中項目順序的函數是不可預知的?根據我的經驗,絕大多數情況下,訂單將無關緊要,這就是API的設計目的。這是你認爲這是一個問題,誰在乎秩序,所以這是你的排序。也許你可以擴展你的問題來解釋爲什麼順序對你很重要,也許在這種情況下,會有更好的方法。 – hvd