13

我怎样才能得到PropertyDescriptor当前财产的?例如:

[MyAttribute("SomeText")]
public string MyProperty
{
    get{....}
    set
    {
        // here I want to get PropertyDescriptor for this property.
    }
}
4

4 回答 4

16

你可以试试这个:


        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 ];
            }
        }
于 2011-01-18T10:32:10.777 回答
11

对于那些在这篇文章中寻找通用功能的人来说,这是一个可重用的转换功能:

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];
}
于 2014-10-14T21:47:19.477 回答
5

我发现以下方法有效:

        //  get property descriptions
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties ( this );

        //  get specific descriptor
        PropertyDescriptor property = properties.Find ( PropertyName, false );

其中PropertyName是传递给方法的值。

于 2011-04-01T02:03:53.127 回答
0

这个怎么样?

this.GetType().GetProperty("MyProperty")

我想您是在问您是否可以在没有字符串的情况下执行此操作 - 即表示“此属性”的其他标记。我认为不存在。但是,既然您无论如何都在编写此代码(?)将属性名称放在代码中有什么困难?

于 2011-01-18T10:19:28.443 回答