2016-02-02 46 views
3

問題。有沒有辦法根據我的自定義屬性的給定實例獲得CustomAttributeData的實例,例如MyAttribute?或相反亦然?從屬性走到CustomAttributeData或向後

爲什麼我需要這個?MyAttribute的實例包含我感興趣的屬性,而CustomAttributeData的實例包含實際的構造函數的參數我很感興趣,所以,現在我實現了雙重的工作:第一,通過調用

Attribute.GetCustomAttribute(property, typeof(MyAttribute)) as MyAttribute 
得到 MyAttribute實例

,並,通過調用

CustomAttributeData.GetCustomAttributes(property) 

和行走在這個集合得到CustomAttributeData實例。

P. S.我看了一下this question,但沒有找到所需的解決方案。

回答

1

如果我正確理解您的問題,您已經擁有自定義屬性MyAttributeInstance的一個實例,並且您希望獲取同一實例的CustomAttributeData,最好在一個步驟中完成。

由於您已經找到了MyAttributeInstance,並且該屬性(或類,或...)被附加到,我將假定您有可用的屬性。因此,這可以爲你可能工作:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == MyAttributeInstance.GetType()); 

我想回答你的問題的實際。不過,我認爲你的意圖可能已經實際上要求如何直接從屬性獲取CustomAttributeData。在這種情況下,試試這個:

CustomAttributeData CAD = property.GetCustomAttributesData().First(x => x.AttributeType == typeof(MyAttribute)); 
+0

感謝您的回答。在我看來(我不記得它的確如此),我問的是如何獲得一個Attribute類的實例,獲得一個CustomAttributeData類的實例。在這種情況下,您的答案只是建議另一種獲取CustomAttributeData類的實例,同時擁有PropertyInfo類的實例(另一種方法是在問題中提出的)。 – Hoborg