A che ora viene eseguito un costruttore di attributi durante l'esecuzione?
-
03-07-2019 - |
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.
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
}
}