Ist es möglich, zur Laufzeit Attribute hinzuzufügen oder den Wert eines Attributs zur Laufzeit zu ändern?
Antworten
Zu viele Anzeigen?Das hängt wirklich davon ab, was genau Sie erreichen wollen.
En System.ComponentModel.TypeDescriptor stuff kann verwendet werden, um Attribute zu Typen, Eigenschaften und Objektinstanzen hinzuzufügen, und es hat die Einschränkung, dass Sie es verwenden müssen, um diese Eigenschaften auch abzurufen. Wenn Sie den Code schreiben, der diese Attribute verbraucht, und Sie mit diesen Einschränkungen leben können, würde ich es auf jeden Fall empfehlen.
Soweit ich weiß, sind das PropertyGrid-Steuerelement und die Visual Studio Design-Oberfläche die einzigen Dinge in der BCL, die TypeDescriptor Zeug verbrauchen. In der Tat, das ist, wie sie etwa die Hälfte der Dinge, die sie wirklich tun müssen, zu tun.
Attribute sind statische Metadaten. Assemblies, Module, Typen, Member, Parameter und Rückgabewerte sind in C# keine Objekte erster Klasse (z.B. die System.Type
Klasse ist lediglich eine reflektierte Darstellung eines Typs). Sie können eine Instanz eines Attributs für einen Typ erhalten und die Eigenschaften ändern, wenn sie beschreibbar sind, aber das wirkt sich nicht auf das Attribut aus, da es auf den Typ angewendet wird.
Nun, nur um anders zu sein, fand ich einen Artikel, der auf die Verwendung von Reflection.Emit verweist, um dies zu tun.
Hier ist der Link: http://www.codeproject.com/KB/cs/dotnetattributes.aspx Sie sollten auch einige der Kommentare am Ende des Artikels lesen, denn dort werden mögliche Ansätze diskutiert.
- See previous answers
- Weitere Antworten anzeigen
0 Stimmen
Ist damit Ihre Frage beantwortet? Hinzufügen eines Attributs zu einer Eigenschaft zur Laufzeit