Frage

Ich möchte mehrere Eigenschaften im Fliegen im Konstruktor der Klasse erstellen und der aktuellen Klasse hinzufügen. Die Vorlage der Eigenschaft ist die folgende

public [PropertyType] [PropertyName]
{
get {return Container.Resolve();}
}

Ich habe ein wenig über codedom und reflection.emit gelesen, konnte aber nicht herausfinden, wie sie in diesem speziellen Anwendungsfall verwendet werden.

Jeder Hinweis wäre sehr geschätzt. Danke im Voraus

Bearbeiten: Ich nehme aufgrund der Anzahl der Fragen auf den Zweck ein. Ich versuche, die Basisklasse für einen Ansichtsmodell -Locator zu implementieren. Die Bindung in XAML wird erreicht, indem sie sich auf eine Eigenschaft auf ihren Pfad bezieht, daher muss sie eine Eigenschaft sein. Die Typen und Namen der zugefügten Eigenschaften sind nur zur Laufzeit bekannt. Daher verwende ich Reflexion, um sie zu erhalten. Kurz gesagt, ich brauche ein Beispiel dafür, ein Stück Code zu nehmen und ihn dynamisch in die gegebene Klasse zu kompilieren.

War es hilfreich?

Lösung

Wenn Sie unter C# 4 sind, können Sie die neuen dynamischen Funktionen dafür verwenden. Verwenden ExpandoObject oder DynamicObject Um Ihrem Objekt dynamisch Eigenschaften hinzuzufügen. Wenn Sie dann in XAML auf sie verweisen, werden sie richtig gelöst.

In jedem Fall ist es nicht möglich, die vorhandene Klasse zu ändern. Was Sie können, ist, eine neue Klasse zu erstellen, die von der vorhandenen Klasse erben und die Eigenschaften dazu hinzufügen kann. Sie sollten in der Lage sein, von XAML an sie zu binden.

Andere Tipps

Alternativer Ansatz:

Sie können icustomtypedescriptor implementieren und die zusätzlichen Eigenschaften bereitstellen

Verknüpfung: Probleme mit der Bindung von Gitterdaten

Binden Sie Ihr XAML -Zeug an etwas wie XML und ändern Sie XML in der Laufzeit

Sie können neue Cals erstellen und aus der aktuellen Klasse erben. Die neue Klasse kann die Funktionen in Fliegen und Basisklassen haben

Ja, es ist möglich, sich das anzusehenHilfe beim Hinzufügen neuer Methoden, Eigenschaften in vorhandene Klassen dynamisch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top