В какой момент времени выполнения запускается конструктор атрибута?

StackOverflow https://stackoverflow.com/questions/617273

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

public class MyOwnAttribute: Attribute {}

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

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top