Frage

Ich möchte Attribute hinzufügen (wie Browsable (false)) dynamisch während im Raster angezeigt werden. Szenario ist, dass ich eine benutzerdefinierte Klasse mit einigen öffentlichen Eigenschaften haben. Allerdings nicht, daß ich alle öffentlichen Eigenschaften wollen in der Benutzeroberfläche angezeigt werden. Gibt es einen Ausweg?

Ich habe versucht, TypeDescriptor verwenden. Aber es funktioniert nur auf der Typebene und nicht auf Objektebene. Ich konnte keine Hilfe finden, wie es bei Immobilien-Ebene zu verwenden.

wird Alle Zeiger sehr geschätzt werden.

War es hilfreich?

Lösung

Eigentlich ist es möglich, aber ich muss zugeben, dass es ziemlich dunkel und schlecht dokumentiert. Der Schlüssel ist, Ihre eigenen TypeDescriptorProvider von System.ComponentModel.TypeDescriptionProvider abzuleiten. Dann können Sie Ihren eigenen TypeDescriptor Nachkommen zurück.

tat ich dies eine ziemlich unangenehme Einschränkung in Bezug auf Viewmodels und Metadaten in ASP.NET MVC zu beheben, aber Sie können es genauso gut verwenden, um Ihre eigene zusätzliche Metadaten einfügen.

Andere Tipps

Ich habe im gleichen Bereich in den letzten paar Tagen arbeiten. Lange Rede kurzer Sinn, ich kam zu dem Schluss, dies nicht möglich ist.

Ist der Grund, warum Sie Attribute zur Laufzeit anzuwenden versuchen, weil Sie nicht wollen, „UI“ Code mit benutzerdefinierten Klassen mischen?

Wenn das der Fall ist, ist die BrowsableAttribute Mitglied des Componentmodel (

scroll top