Zu welchem ​​Zeitpunkt während der Laufzeit bekommt ein Attributkonstruktor laufen?

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

  •  03-07-2019
  •  | 
  •  

Frage

Der Versuch, eine ausführliche Referenz auf die Feinheiten der Attribute zu finden. Jede mögliche Hilfe würde geschätzt.

An dieser Stelle möchte ich ausdrücklich wissen, was Zeit während der Laufzeit ist ein Attributkonstruktor RAN erhalten?

  • Wenn es über eine Klasse
  • Wenn es über eine Eigenschaft
  • Wenn es über ein Verfahren

Danke.

War es hilfreich?

Lösung

Der Konstruktor wird aufgerufen, wenn Sie anrufen GetCustomAttributes () auf der Art oder Member.

Andere Tipps

Das Lesen der Norm (17.3.2 in der C # 2.0-Version) ist es nicht spezifiziert. Nur die Art und Weise von der metatada zu einer Instanz zu konvertieren ist.

Sie müssen also auf verschiedene Implementierungen testen, denn wenn es nicht angegeben ist es gebunden ist anders interpretiert werden.

Das einzige, was Sie sicher sein können, ist, dass es vor der benötigt wird, genannt werde. Es ist nicht die genaue Zeit der Konstruktor definiert wird aufgerufen werden.

Wie auch immer, das Verhalten ist unespecified, so sollten Sie nicht darauf verlassen, wann immer die Constructur von der aktuellen Implementierung aufgerufen wird.

Attribut sind Dekorationen, die Metadaten oder Informationen über einen Typ speichert. NET Framework nutzt stark diese Art von Informationen eine zusätzliche Verarbeitung zu tun, wenn Instanzen zu schaffen.

Das Attribut wird nur gebaut, wenn sie von einer anderen Klasse, mit Type.GetCustomAttributes () zum Beispiel gefragt. Also, auch können Sie Ihre eigenen Attribute erstellen und dann fragen nach Ihren benutzerdefinierten Attributen.

public class MyOwnAttribute: Attribute {}

/ * an einem gewissen Punkt in einer anderen Klasse * /

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top