0

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

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

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

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

編集:質問の数が多いため、目的を詳しく説明しています...ビューモデルロケーターの基本クラスを実装しようとしています。xaml でのバインドは、パスによってプロパティを参照することで実現されるため、プロパティである必要があります。追加するプロパティの型と名前は実行時にしか分からないため、リフレクションを使用してそれらを取得しています。要するに、コードの一部を取得し、それを指定されたクラスに動的にコンパイルする例が必要です。

4

4 に答える 4

2

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

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

于 2011-06-12T11:03:47.747 に答える
1

別のアプローチ:

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

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

于 2011-06-12T11:07:54.403 に答える
0

xaml のものを xml のようなものにバインドし、実行時に xml を変更します

于 2011-06-12T11:04:09.307 に答える
-1

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

はい、 新しいメソッドやプロパティを既存のクラスに動的に追加する際に必要なこのヘルプをご覧ください。

于 2011-06-12T10:56:40.587 に答える