Benutzerdefinierte vs. nicht benutzerdefinierte Attribute?

8

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?

    
Jez 14.11.2012, 21:22
quelle

3 Antworten

2

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?

    
Jeppe Stig Nielsen 14.11.2012, 22:01
quelle
5

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.

    
Jay 14.11.2012 21:39
quelle
2

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 Ссылка )

    
Marcus 14.11.2012 21:40
quelle

Tags und Links