Как получить PropertyDescriptor для текущего свойства? - PullRequest
11 голосов
/ 18 января 2011

Как я могу получить PropertyDescriptor для текущего свойства? Например:

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

Ответы [ 4 ]

15 голосов
/ 18 января 2011

Вы можете попробовать это:


        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 ];
            }
        }
9 голосов
/ 15 октября 2014

Вот функция многократного использования для тех, кто попал на этот пост и ищет общую функцию:

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];
}
5 голосов
/ 01 апреля 2011

Я обнаружил, что работает следующее:

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

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

, где PropertyName - это значение, переданное методу.

0 голосов
/ 18 января 2011

Как насчет этого?

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

Я думаю, вы спрашиваете, можете ли вы сделать это без строки - то есть какой-то другой токен, который представляет «это свойство».Я не думаю, что это существует.Но так как вы все равно пишете этот код (?), В чем заключается сложность ввода названия свойства в коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...