DataGrid
コンパイル時に不明な型からデータを表示する方法を探しています。
次の基本クラスがあります
public abstract class Entity
{
// Some implementation of methods ...
}
実行時に、プラグイン DLL をロードし、リフレクションを使用して から派生したすべての型のリストを取得しますEntity
。例えば:
public class A : Entity
{
public LocalAddress Address{ get; set; }
}
public class B : Entity
{
public Vendor Vendor { get; set; }
public string Name { get; set; }
}
次に、DB からインスタンスのリストを取得します
public IEnumerable<Entity> Entities { get; set; } // A list of instances of type A for example
Entities
は DataGrid のですItemsSource
が、プロパティを にバインドできる最善の方法はDataGrid
何ですか? プロパティは複雑になる可能性があるため、特定のパスにバインドできる必要もあります。たとえばAddress.HomeNum
...
明確化
一度に 1 つの型のインスタンスの 1 つのグリッドを表示するだけで済みます。完全なシナリオは次のとおりです。
Entity
リフレクションによってプラグイン DLL から派生した型のリストを取得し ます- リストに名前を表示します。(この例では、リストには
A
とB
- ユーザーが特定のアイテムをクリックすると、たとえば、DB からインスタンス
A
のリストを取得しA
ます。これまでのところ、問題ありません。 - のインスタンスのリストを
A
DataGrid
. - ユーザーがリストから別のアイテムを選択すると (別のタイプを意味します
B
)、DB から のインスタンスのリストを取得し、B
それらをグリッドなどに表示する必要があります ...
プラグイン DLL は、xaml のないクラス ライブラリです (また、私のユーザーはこのプラグインを作成しているので
DataTemplate
、エンティティの sDataTemplate
を書く必要はありません。実行時まで表示する必要があるタイプがわからない. 各タイプは異なるタイプとプロパティの量を持つことができる. コンパイル時に私が知っているのは、それらがすべてEntity
.- グリッドも編集可能である必要があります。