Etwas, das die Schnittstelle ICustomAttributeProvider
implementiert, erlaubt Ihnen, benutzerdefinierte Attribute zu erhalten, die über die Methode GetCustomAttributes
auf sie angewendet wurden. Wie ich es verstehe, ist ein benutzerdefiniertes Attribut im Grunde eine spezielle Klasse (endend in "Attribut" und erweitert die Attribute
-Klasse), die erstellt wird, um auf etwas wie eine Methode oder Klasse mit der entsprechenden Syntax ( [FooAttribute]
kurz zuvor) angewendet werden die Methode / Klasse / etc in C #, zum Beispiel). Aber wenn das ein benutzerdefiniertes Attribut ist, was ist ein nicht - benutzerdefiniertes Attribut? Ich dachte früher, dass Attribute, die mit .NET gebündelt wurden, nicht benutzerdefiniert waren, aber GetCustomAttributes
gibt mir sogar Attribute wie System.ThreadStaticAttribute
zurück, die sehr wichtig für das .NET Framework sind.
Gibt es so etwas wie ein nicht benutzerdefiniertes Attribut oder ist "benutzerdefiniertes Attribut" nur eine Tautologie?
Ich weiß nicht, ob das folgende relevant ist, aber wenn Sie
sagen %Vor% Sie erhalten einen Wert für einen Flag-Enum-Typ namens TypeAttributes
. Vielleicht sind diese Flags die "nicht-benutzerdefinierten" Attribute des Typs?
Alles, was von Attribute
abstammt, ist ein benutzerdefiniertes Attribut.
"Attribut" ist ein allgemeiner Begriff. Objekte in der realen Welt haben unzählige Attribute. Klassen, Mitglieder und Parameter haben alle Attribute, die wir beschreiben können - Namen, Typen, Accessoren, Anzahl der Mitglieder, Vererbungsinformationen, usw.
Benutzerdefinierte -Attribute sind Dinge, die wir auf anwenden - Aspekte, die wir assoziieren und zur Beschreibung verwenden möchten, die aber nicht intrinsisch sind.
Siehe Wikipedia , wobei angegeben wird:
Entwickler können ihrem Code Metadaten über Attribute hinzufügen. Dort sind zwei Arten von Attributen, benutzerdefinierte und Pseudo-benutzerdefinierte Attribute, und Für den Entwickler haben diese die gleiche Syntax. Attribute im Code sind Nachrichten an den Compiler, um Metadaten zu generieren. In CIL, Metadaten wie als Vererbungsmodifikatoren, Bereichsmodifikatoren und fast alles, was ist entweder Opcodes oder Streams, werden auch als Attribute bezeichnet.
Siehe auch die CLI-Spezifikation zum Erweitern von Metadaten, wobei Verweise auf den Begriff "benutzerdefinierte" Attribute gefunden werden (zB I.9.7 in Ссылка )
Tags und Links .net c# custom-attributes