Использование пользовательских атрибутов из конструктора - C # - PullRequest
1 голос
/ 27 июня 2009

Я хочу получить доступ к настраиваемым атрибутам поля в классе. Я хочу получить доступ к атрибутам, размещенным на поле во время конструктора полей. Возможно ли это?

Редактировать 28.06.09 Что-то вроде приведенного ниже псевдокода

class SpecialInt </p> <p>{ </p> <pre><code>int _intVal; int _maxVal; public SpecialInt() { //Get attribute for the instantiated specialint _maxVal = GetAttribute("MaxValue")

} }

класс main ()

{

[MaxValue(100)] 
SpecialInt sInt; 
public main() 
{ 
    sInt = new SpecialInt() 
} 

}

Ответы [ 2 ]

6 голосов
/ 27 июня 2009

Конечно, это возможно. Атрибуты хранятся в метаданных, и они легко доступны во время создания объекта.

public class Foo { 
  [Something]
  public int Field1;

  public Foo() {
    FieldInfo fi = typeof(Foo).GetField("Field1");
    SomethingAttribute si = (SomethingAttribute)fi.GetCustomAttribute(typeof(SomethingAttribute),false)[0];
    // grab any Custom attribute off of Fiield1 here
  }
}
1 голос
/ 27 июня 2009

Вы можете проверить их из любого места. Атрибуты вставляются в метаданные для типа при его компиляции. Тип не требует создания экземпляра для доступа к свойствам поля.

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