我想使用C#的反射和自定義屬性來簡化使用中央管理類來註冊一系列類型(即,它提供靜態方法,其中包含字符串鍵和調用/檢索相關類型的適當方法/參數)。看看這裏和其他地方的其他問題,似乎最好的方式是簡單地遍歷程序集的所有公共類型 - 因爲它的目的是成爲一個庫 - 並檢查每種類型是否具有適當的屬性,然後將相關值添加到基礎字典中。反思和迭代肯定會很慢,但我可以忍受它,因爲它應該只發生一次。在.NET中檢索類型的自定義屬性標準
不幸的是,我無法弄清楚如何從一個類型的屬性。對於方法和裝配體,我可以使用System.Reflection.Extensions
中的CustomAttributeExtensions.GetCustomAttribute<MyAttribute>(base)
,但這不會爲Type
提供過載; Assembly.GetCustomAttribute(Assembly, Type)
和this question中使用的.IsDefined(...)
方法相同。 OthersuggestionsType
本身的使用方法,從the documentation,似乎從mscorelib.dll
加載,但它似乎沒有出現在Intellisense甚至添加引用後,我不知道如何與.dll交互。 NET標準,反正(如,它減少對所有任意平臺上運行的能力嗎?)
我失去了一些東西明顯,或者是不是真的這樣很難得到一個Attribute
回到斷開Type
的?
你能告訴你如何嘗試調用'GetCustomAttributes()'的例子嗎? –
@RenéVogt這就是'CustomAttributeExtensions.GetCustomAttribute(base)'的用途('base'是我試圖測試的'Type'),但我承認它可能有更好的路標幷包含更多的上下文。無論哪種方式,康奈爾的答案如下。 –
WovenTales