C# 如何获取当前属性的PropertyDescriptor?
如何获取当前属性的C# 如何获取当前属性的PropertyDescriptor?,c#,.net,propertydescriptor,C#,.net,Propertydescriptor,如何获取当前属性的PropertyDescriptor?例如: [MyAttribute("SomeText")] public string MyProperty { get{....} set { // here I want to get PropertyDescriptor for this property. } } 这个怎么样 this.GetType().GetProperty("MyProperty") 我想你是在问,你是否可以
PropertyDescriptor
?例如:
[MyAttribute("SomeText")]
public string MyProperty
{
get{....}
set
{
// here I want to get PropertyDescriptor for this property.
}
}
这个怎么样
this.GetType().GetProperty("MyProperty")
我想你是在问,你是否可以不用这个字符串来做这件事,也就是说,其他一些表示“thisproperty”的标记。我认为这是不存在的。但是,既然您正在编写此代码(?)那么,仅在代码中输入属性名称有什么困难?您可以尝试以下方法:
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 ];
}
}
我发现以下方法有效:
// get property descriptions
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties ( this );
// get specific descriptor
PropertyDescriptor property = properties.Find ( PropertyName, false );
其中,
PropertyName
是传递到方法中的值。这里有一个可重复使用的转换函数,供那些来到本文寻找通用函数的人使用:
publicstaticpropertydescriptor GetPropertyDescriptor(PropertyInfo PropertyInfo)
{
返回TypeDescriptor.GetProperties(PropertyInfo.DeclaringType).Item(PropertyInfo.Name);
}
这里有一个扩展方法:
public static PropertyDescriptor PropertyDescriptor(此PropertyInfo PropertyInfo)
{
返回TypeDescriptor.GetProperties(propertyInfo.DeclaringType)[propertyInfo.Name];
}
如果是这种情况,我将获取属性信息。。。但是我需要TypeConverter,从我的属性中显示名称..我也可以手动获取所有属性并找到TypeConverter,但这不是一个好主意,我还可以使用TypeDescriptor.GetProperties(这个),然后运行所有属性并找到我需要的。。。但也许内置的东西已经实现了。。。而且比我写的更快..你的代码对重构不友好。用lamda代替字符串。@CodeInChaos-你怎么能用lambda呢?你能举个例子吗?你。。。很好,我可以编写System.ComponentModel.PropertyDescriptorCollection pdc=System.ComponentModel.TypeDescriptor.GetProperties(这个);在我的构造函数中只使用一次。。。谢谢