3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
根據(jù)MSDN, MetadataToken一個(gè)模塊內(nèi)部是唯一的-沒什么可說的是它可以保證任何訂單。
即使它確實(shí)按照您希望的方式運(yùn)行,也將是特定于實(shí)現(xiàn)的,并且隨時(shí)可能更改,恕不另行通知。
請(qǐng)參閱此舊的MSDN博客條目。
我強(qiáng)烈建議您不要依賴任何此類實(shí)現(xiàn)細(xì)節(jié)-請(qǐng)參閱Marc Gravell的回答。
如果您在編譯時(shí)需要一些東西,可以看一下Roslyn(盡管它還處于早期階段)。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果要使用屬性路由,這是我過去使用的方法;
public static IOrderedEnumerable<PropertyInfo> GetSortedProperties<T>()
{
return typeof(T)
.GetProperties()
.OrderBy(p => ((Order)p.GetCustomAttributes(typeof(Order), false)[0]).Order);
}
然后像這樣使用它;
var test = new TestRecord { A = 1, B = 2, C = 3 };
foreach (var prop in GetSortedProperties<TestRecord>())
{
Console.WriteLine(prop.GetValue(test, null));
}
哪里;
class TestRecord
{
[Order(1)]
public int A { get; set; }
[Order(2)]
public int B { get; set; }
[Order(3)]
public int C { get; set; }
}
如果您在所有屬性上都沒有可比較屬性的類型上運(yùn)行該方法,則該方法將受到禁止,因此請(qǐng)小心使用它的方式,它應(yīng)足以滿足要求。
我省略了Order:Attribute的定義,因?yàn)閅ahia到Marc Gravell的帖子的鏈接中有一個(gè)很好的示例。
- 3 回答
- 0 關(guān)注
- 1081 瀏覽
添加回答
舉報(bào)