我怎样才能得到PropertyDescriptor
当前财产的?例如:
[MyAttribute("SomeText")]
public string MyProperty
{
get{....}
set
{
// here I want to get PropertyDescriptor for this property.
}
}
我怎样才能得到PropertyDescriptor
当前财产的?例如:
[MyAttribute("SomeText")]
public string MyProperty
{
get{....}
set
{
// here I want to get PropertyDescriptor for this property.
}
}
你可以试试这个:
public string Test
{
get
{
//Get properties for this
System.ComponentModel.PropertyDescriptorCollection pdc = System.ComponentModel.TypeDescriptor.GetProperties( this );
//Get property descriptor for current property
System.ComponentModel.PropertyDescriptor pd = pdc[ System.Reflection.MethodBase.GetCurrentMethod().Name ];
}
}
对于那些在这篇文章中寻找通用功能的人来说,这是一个可重用的转换功能:
public static PropertyDescriptor GetPropertyDescriptor(PropertyInfo PropertyInfo)
{
return TypeDescriptor.GetProperties(PropertyInfo.DeclaringType).Item(PropertyInfo.Name);
}
这是一个扩展方法:
public static PropertyDescriptor PropertyDescriptor(this PropertyInfo propertyInfo)
{
return TypeDescriptor.GetProperties(propertyInfo.DeclaringType)[propertyInfo.Name];
}
我发现以下方法有效:
// get property descriptions
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties ( this );
// get specific descriptor
PropertyDescriptor property = properties.Find ( PropertyName, false );
其中PropertyName
是传递给方法的值。
这个怎么样?
this.GetType().GetProperty("MyProperty")
我想您是在问您是否可以在没有字符串的情况下执行此操作 - 即表示“此属性”的其他标记。我认为不存在。但是,既然您无论如何都在编写此代码(?)将属性名称放在代码中有什么困难?