2014-03-27 74 views
0

我有一個類型,我希望確定在運行時,如果它具有以下屬性:如何確定一個類型有TypeConverterAttribute

[TypeConverter(typeof(ExpandableObjectConverter))] 

我試着使用:

Attribute.IsDefined(Type attributeType, bool inherit) 

但我在指定此方法的第一個參數時遇到問題。

如果屬性只是[TypeConverter]這將看似是簡單的,但使用

typeof(TypeConverter(typeof(ExpandableObjectConverter)) 

給出一個編譯時錯誤。

+0

什麼是錯誤? –

回答

1
[TypeConverter(typeof(ExpandableObjectConverter))] 

這條線將創建ExpandableObjectConverterTypeConverterAttribute一個對象作爲參數(TypeConverterAttribute Constructor)並將其綁定到您的類型。

起初你會得到定義的屬性。在你的情況下,它是TypeConverterAttribute。 之後,您檢查屬性參數ConverterTypeName

TypeConverterAttribute myAttribute = (TypeConverterAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof (TypeConverterAttribute)); 
if(myAttribute != null) 
{ 
    String typeName = myAttribute.ConverterTypeName; 
    Type t = Type.GetType(typeName); 
    if(t == typeof(ExpandableObjectConverter)) 
    { 
     //.. 
    } 
} 
+0

謝謝,在我的情況下,我也必須檢查我的類型和基類的接口是否完整。 – openshac

相關問題