2015-06-16 3 views
0

Скажем, у меня есть свойство определенно, как показано ниже:Как прочитать атрибут свойства в классе определяющего типа?

[SomeAttriubte("#1")] 
public SomeClass Property1 { get; set; } 

[SomeAttribute("#2")] 
public SomeClass Property2 { get; set; } 

Какого SomeClass определения является чем-то вроде этого:

public class SomeClass 
{ 
    private void PrivateMethod() 
    { 
      //Some action 
    } 
} 

Есть ли способ читать SomeAttribute значения аргумента в PrivateMethod внутри класса определяющего класса?

+0

Атрибуты могут быть прочитаны только классом (типом), который определяет свойства. см. здесь http://stackoverflow.com/questions/2656189/how-do-i-read-an-attribute-on-a-class-at-runtime – Ric

+0

Так что нет возможности прочитать значения из тела SomeClass, справа ? Тогда какой был бы лучший подход, чтобы попросить определяющий класс подвергать данные атрибутов классу SomeClass ??? – evolon

+0

@evolon В общем, нет ... Даже если содержащий класс передал 'this' на' SomeClass', 'SomeClass' не смог бы отличить случай, когда' Property1 == Property2' – xanatos

ответ

2

Нет. Атрибуты, которые вы используете, связаны с этим свойством. Чтобы иметь доступ к ним, SomeClass.PrivateMethod() должен знать PropertyInfo свойств, в которых он используется. Но он не может. Чтобы быть более «понятным»: тип не знает «где» он используется, и не зная «где» он используется, он не может получить доступ к атрибутам, связанным с местом «где» он используется (в том же что он не может получить доступ к this объекта «где» используется)

+0

@evolon I не знаю ... Все зависит от того, что вы хотите сделать. Обычно у вас будет второй класс, который «анализирует»/«анализирует» класс «контейнер» и делает «вещи» ... Но он очень абстрактный. Не зная, что вы хотите сделать, сложно сказать, как это сделать. – xanatos

Смежные вопросы