質問

クラスのコンストラクター内で、その場でいくつかのプロパティを作成し、現在のクラスに追加したいと思います。プロパティのテンプレートは次のとおりです

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

CodedomとReflection.emitについて少し読みましたが、この特定のユースケースでそれらを使用する方法を理解することはできませんでした。

どんな手がかりも大歓迎です。前もって感謝します

編集:質問の数のために目的について詳しく説明しています...ビューモデルロケーターのベースクラスを実装しようとしています。 XAMLのバインディングは、その経路で財産を参照することで達成されるため、プロパティでなければなりません。追加するプロパティのタイプと名前は実行時にのみ知られているため、それらを取得するために反射を使用しています。要するに、コードを使用して、指定されたクラスに動的にコンパイルする例が必要です。

役に立ちましたか?

解決

C#4を使用している場合は、そのために新しい動的機能を使用できます。使用する ExpandoObject また DynamicObject オブジェクトに動的にプロパティを追加します。 XAMLでそれらを参照すると、それらは正しく解決されます。

いずれにせよ、既存のクラスを変更することはできません。できるのは、既存のクラスから継承し、プロパティを追加できる新しいクラスを作成することです。 Xamlからそれらにバインドできるはずです。

他のヒント

代替アプローチ:

icustomtypedescriptorを実装し、追加のプロパティを提供できます

リンク: グリッドデータバインディングの問題

XAMLのものをXMLのような何かにバインドし、ランタイムでXMLを変更します

新しいCalsを作成し、現在のクラスから継承することができます。新しいクラスは、オンザフライプロパティとベースクラスの機能を持つことができます

はい、それはこれを見てください新しい方法、既存のクラスに動的にプロパティを追加するのに必要なヘルプ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top