Programmgesteuert fügen Sie ein Attribut, eine Methode oder einen parameter
Kann ich verwenden TypeDescriptor.AddAttributes hinzufügen eines Attributs zu einem Typ in der runtime. Wie mache ich das gleiche für eine Methode und parameter? (vielleicht 2 getrennte Fragen,...)
- In welchen Situationen möchten Sie die Attribute angezeigt werden?
- Für die Reflexion, daher bemerkte ich auch TypeDescriptor.AddAttribute nicht für, die.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TypeDescriptor.AddAttributes
nur auf eine sehr spezifischen Gebrauch-Fall, d.h. innerhalbSystem.ComponentModel
. Für die rest der Reflexion, weiß, dass es nichts über das zusätzliche Attribut. Und in der TatSystem.ComponentModel
nicht wirklich zu den Methoden oder Parameter.Also kurz gesagt; das können Sie nicht. Sie müssen diese Daten speichern, woanders (bespoke), oder fügen Sie es zur compile-Zeit.
TypeDescriptor
undTypeDescriptionProvider
sind nicht implementiert?User
Klasse, dieIUser
auf dem server. Der erzeugte client-Entität implementierenIIdentity.IsAuthenticated
, und ich wollte es Attribut mit[Display(AutoGenerateField=false)]
. Ich habe versucht, eine passende dummy-Eigenschaft auf den server und markieren Sie es mitExclude
es ist also nicht generiert, zweimal, dann fügen Sie Metadaten in die Metadaten-Körper-Klasse, die Metadaten erzeugt werden sollen, für die vorhandenen Immobilien auf dem client auch, aber das hat nicht funktioniert. GeneriertIsAuthenticated
bleibt ohne Referenz auf den clientSo wie ich das sehe aus der Analyse der
TypeDescriptor
Klasse im Reflektor, die.AddAttributes
- Methode ruft intern die.AddProvider
Methode. DieTypeDescriptionProvider
- Instanz übergeben werden, ist eigentlich verantwortlich für die Bereitstellung von meta-Daten. Sie könnten versuchen, indem Sie die [TypeDescriptionProviderAttribute] - Attribut für Eure Klasse und implementieren Sie Ihre eigenen providers durch die sich aus derTypeDescriptionProvider
Klasse. Wie die Dokumentation sagt, durch überschreibenTypeDescriptionProvider.CreateInstance
, können Sie eine Ersatz-Objekt, dessen Typ hat alle notwendigen Attribute. Ich vermute, dass die Attribute angewendet, um die Methoden innerhalb der vertretungsart wird auch wirksam werden. Ich habe jedoch nicht versucht, mich selbst, so fühlen sich frei zu Experimentieren...