В какое время во время выполнения запускается конструктор атрибутов? - PullRequest
2 голосов
/ 06 марта 2009

Пытаемся найти какую-то многословную ссылку на тонкости Атрибутов. Любая помощь будет оценена.

На данном этапе мне бы хотелось узнать, во сколько во время выполнения запускается конструктор атрибутов?

  • Если это более чем класс
  • Если все кончено
  • Если метод закончен

Спасибо.

Ответы [ 4 ]

3 голосов
/ 06 марта 2009

Конструктор вызывается при вызове GetCustomAttributes () для типа или MemberInfo.

3 голосов
/ 06 марта 2009

Чтение нормы (17.3.2 в версии C # 2.0) не указано. Только способ преобразовать метатаду в экземпляр.

Так что вам может потребоваться протестировать на разных реализациях, потому что, если он не указан, он будет интерпретироваться по-разному.

2 голосов
/ 06 марта 2009

Единственное, в чем вы можете быть уверены, это то, что он будет вызван раньше, чем это необходимо. Не определено точное время вызова конструктора.

В любом случае, поведение не определено, поэтому не стоит полагаться на то, что constructur вызывается текущей реализацией.

0 голосов
/ 23 мая 2012

Атрибут - это украшения, в которых хранятся метаданные или информация о типе. .Net Framework интенсивно использует эту информацию для дополнительной обработки при создании экземпляров.

Атрибут создается только по запросу другого класса, например с Type.GetCustomAttributes (). Таким образом, даже вы можете создавать свои собственные атрибуты, а затем запрашивать ваши пользовательские атрибуты.

public class MyOwnAttribute: Attribute {}

/ * в какой-то момент в другом классе * /

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...