Domanda

Cercando di trovare qualche riferimento dettagliato sulla complessità degli Attributi. Qualsiasi aiuto sarebbe apprezzato.

A questo punto, vorrei specificamente sapere a che ora viene eseguito un costruttore di attributi durante l'esecuzione?

  • Se è finita una lezione
  • Se si trova sopra una proprietà
  • Se si tratta di un metodo

Grazie.

È stato utile?

Soluzione

Il costruttore viene richiamato quando si chiama GetCustomAttributes () sul tipo o MemberInfo.

Altri suggerimenti

La lettura della norma (17.3.2 nella versione C # 2.0) non è specificata. Solo il modo per convertire dalla metatada in un'istanza è.

Quindi potrebbe essere necessario testare su diverse implementazioni, perché se non è specificato è destinato a essere interpretato diversamente.

L'unica cosa di cui puoi essere certo è che verrà chiamato prima che sia necessario. Non è definito l'ora esatta in cui verrà chiamato il costruttore.

Comunque, il comportamento non è specificato, quindi non dovresti fare affidamento ogni volta che il costruttore viene chiamato dall'attuale implementazione.

Gli attributi sono decorazioni che memorizzano metadati o informazioni su un tipo. Il framework .Net utilizza pesantemente questo tipo di informazioni per eseguire ulteriori elaborazioni durante la creazione di istanze.

L'attributo è costruito solo quando richiesto da un'altra classe, ad esempio Type.GetCustomAttributes (). Quindi, anche tu puoi creare i tuoi attributi e quindi chiedere i tuoi attributi personalizzati.

public class MyOwnAttribute: Attribute {}

/ * ad un certo punto in un'altra classe * /

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top