A que horas durante o tempo de execução um construtor de atributos é executado?

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

  •  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.

Foi útil?

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
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top