Fügen Sie eine Eigenschaft zur Laufzeit zu einem bestehenden Objekt mit propertyBuilder
Ein Objekt hat gewisse Eigenschaften , die sich jetzt in runtime -- wenn eine Bedingung erfüllt ist .. ich neue Eigenschaften hinzufügen möchten, um dieses Objekt .
"DynamicObject" kann nicht sein ustilised seit ich nicht wissen, die Namen der Eigenschaft vorher .
Kam ich über PropertyBuilder http://msdn.microsoft.com/en-us/library/system.reflection.emit.propertybuilder.aspx
Aber ich kann nicht finden, die Hilfe in Bezug auf, wie Sie mithilfe der propertBuilder für das hinzufügen von Eigenschaften zu einem vorhandenen Objekt von einem definierten vorhandene Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht fügen Sie real (Reflexions -) Eigenschaften zu einem Objekt oder Typ zur Laufzeit.
Wenn der Kontext hier ist die Datenbindung, dann können Sie alle künstliche Eigenschaften, durch die Implementierung von
ICustomTypeDescriptor
,TypeDescriptionProvider
,TypeConverter
,ITypedList
- und die Bereitstellung Ihrer eigenenPropertyDescriptor
s für die extra-Eigenschaften.ICustomTypeDescriptor
ist pro Objekt und gebunden an das ObjektTypeDescriptionProvider
ist pro Objekt oder pro-Typ, und ist separate auf das ObjektTypeConverter
ist pro-Art und wird insbesondere vonPropertyGrid
ITypedList
ist, wird durch eine Liste (IList
) zu beschreiben, die Eigenschaften der untergeordneten ObjekteBeispiel:
PropertyGrid
, dannTypeConverter
ist die einfachste Möglichkeit - viel einfacher als die ImplementierungICustomTypeDescriptor
oderTypeDescriptionProvider
- Sie nur UnterklasseExpandableObjectConverter
und überschreibenGetProperties
, und verwenden SieTypeConverterAttribute
verknüpfen Ihre Software zu Ihrem Typ.Überprüfen Sie diese Adresse
https://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes(v=vs. 110).aspx