1

ユーザーが実行時にプログラムでクラスを作成できるアプリケーションに取り組んでいます。クラスに変換されるメタデータを入力する UI 画面があります。基本的に、ユーザーが入力したデータは、.cs ファイルでプロパティを生成するために使用されます。

したがって、ユーザーがメタ データの入力を終了した後、生成されたクラス ファイルからオブジェクトをインスタンス化できる必要があります。クラス ファイルは新しく、Web アプリ用にコンパイルされたコードの一部ではないため、クラスを読み込んでインスタンス化するにはどうすればよいですか?

ユーザーがメタ データの入力を終了した後、プログラムで DLL を生成できます。DLL には、エンド ユーザーが入力したメタ データを表す .cs ファイルが含まれています。

appDomain を作成して dll をロードすることを検討しましたが、プロセスが DLL を見つけることができないため (新しく作成された DLL の物理パスを使用しているにもかかわらず)、失敗します。プラグイン アーキテクチャ - MEF (Microsoft Extensibility Framework)、MAF (Microsoft Addin Framework) を調べましたが、どちらを使用するか少し混乱しています。

使用するための最良のアプローチは何ですか?

4

1 に答える 1

0

仕事に間違ったツールを使用しているようです。このタイプの動的オブジェクトには、.net40 に動的拡張機能があり、それ以外の場合は一般的なプロパティ バッグ オブジェクト パターンを使用できます。

しかし、本当にこれを行い、十分に単純にしたい場合は、MEF を使用してください。structuremap は、既知のデータ型でうまく機能します。MEF は、未知のオブジェクトを一緒に構成することに優れています。生成されたクラスにエクスポートを適用し、dll をコンパイルし、MEF に dll からコンテナーを作成するように依頼するだけで、MEF からオブジェクトを取得できます。

また、生成された dll をアプリ ドメインに直接ロードしようとしたときに発生するエラーを配置するときにも役立ちます。

于 2010-06-23T22:30:54.460 に答える