A que horas durante o tempo de execução um construtor de atributos é executado?
-
03-07-2019 - |
Pergunta
Tentando encontrar alguma referência detalhada sobre os meandros dos atributos. Qualquer ajuda seria apreciada.
Neste ponto, eu gostaria de saber especificamente a que horas durante o tempo de execução um construtor de atributos é executado?
- Se estiver em uma aula
- Se for sobre uma propriedade
- Se acabar com um método
Obrigado.
Solução
O construtor é chamado quando você chama getCustomattributes () no tipo ou membroInfo.
Outras dicas
Lendo a norma (17.3.2 Na versão C# 2.0), não é especificada. Somente a maneira de converter da metatada em uma instância é.
Portanto, você pode precisar testar em diferentes implementações, porque se não for especificado, ele deve ser interpretado de maneira diferente.
A única coisa que você pode ter certeza é que será chamado antes é necessário. Não está definido na hora exata em que o construtor será chamado.
De qualquer forma, o comportamento não é especificado; portanto, você não deve confiar sempre que a construção for chamada pela implementação atual.
Atributo são decorações que armazenam metadados ou informações sobre um tipo. O .NET Framework utiliza muito esse tipo de informação para fazer processamento adicional ao criar instâncias.
O atributo é construído apenas quando solicitado por outra classe, com tipo.getCustomattributes (), por exemplo. Portanto, até você pode criar seus próprios atributos e solicita seus atributos personalizados.
public class MyOwnAttribute: Attribute {}
/ * Em algum momento de outra classe */
void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
var instance = new MyClass();
if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
{
//do whatever you want
}
}