В какой момент времени выполнения запускается конструктор атрибута?
-
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
}
}