2

通常、Unity(DIC)は、web.configなどの標準のXML構成ファイルを使用して構成されます。

プロジェクトの目的のために、Unityは私が使いたいと思う素晴らしい機能を提供します。ただし、他の顧客がそれを使用したいと思うかもしれず、すべての顧客がXML構成ファイルを使用したいとは限らないため、顧客が自分の構成をその方法でロードできるように、アダプターを作成できるようにすることが望まれます( s)彼はそれを望んでいます。

したがって、必要に応じて、txt、カスタムxmlファイル、標準のweb.configファイル、またはさらに重要なことに、それらによって定義されたデータベーススキーマから構成をロードします。そのため、コンテナのすべてのマッピングはこれらの方法のいずれかになります。

私はこれを行うための最良の方法を考えていました。おそらく、カスタムの方法でそれを行うことになります。

これを可能にするUnityと競合する意見やその他のツール?

ありがとう!

4

2 に答える 2

3

Unity APIを使用すると、設定ファイルで実行できるすべてのことを実行できます。実際、構成ファイルローダーは単に命令を読み取り、対応するAPIを呼び出します。

私の最初の提案は、構成ファイルの代わりにAPIを使用してコンテナーを構成することを検討することです。次に、別の場所から構成をロードする場合は、必要な形式のリーダーを作成し、ロードしたものに基づいてコンテナーAPIを呼び出します。

「ボックス」には他のソースから構成を読み取るものは何もありませんが、書き込むのは簡単です。

于 2012-05-29T23:55:02.830 に答える
1

1つの方法は、リフレクションを使用して、DBに文字列として格納されている型名をtypeインスタンスに変換することです。その後、タイプマッピングをコンテナにプログラムでロードすることにより、アプリケーションの起動時にUnityを構成できます。

現時点ではVSを開いていませんが、構文は次のようになると思います。

var mapFrom = typeof(IMyInterface);
var mapTo = Type.GetType("My.App.MyType"); // load the string from the DB
var container = new UnityContainer();
container.RegisterType(mapFrom, mapTo);

また、 MicrosoftMEFも確認することをお勧めします。それはあなたが話していることを正確には行いませんが、プラグインアーキテクチャを中心に設計されており、さまざまな.dllをフォルダにドロップして、アプリに自動的に使用させることができます。

于 2012-05-30T00:30:54.837 に答える