我有一个类型,我希望在运行时确定它是否具有以下属性:
[TypeConverter(typeof(ExpandableObjectConverter))]
我试图使用:
Attribute.IsDefined(Type attributeType, bool inherit)
但是我在指定此方法的第一个参数时遇到了问题。
如果属性只是[TypeConverter]
,那么它似乎很简单,但使用
typeof(TypeConverter(typeof(ExpandableObjectConverter))
给出编译时错误。
答案 0 :(得分:1)
[TypeConverter(typeof(ExpandableObjectConverter))]
此行创建TypeConverterAttribute
的对象,ExpandableObjectConverter
作为参数(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))
{
//..
}
}