2016-09-30 6 views
1

私は質問があります。私は、Unity DIコンテナ、ライブラリプロジェクト、WCFプロジェクトのWPFプロジェクトを共通のソリューションで持っています。 WCFライブラリでは、データベースから読み取るサービスです。 UserManagerがコンストラクタで設定されていますが、これにはエラーがあります。複数のプロジェクトでDIユニティ - ベストプラクティス

私の質問は、ソリューション内の各プロジェクトにユニティコンテナを配置する必要がありますか、ソリューション全体の依存関係を見つけるように1つのユニティコンテナを構成できますか?

var container = new UnityContainer(); 
container.RegisterTypes(
    AllClasses.FromLoadedAssemblies(), 
    WithMappings.FromMatchingInterface, 
    WithName.Default); 

しかし、それは、WCFアプリケーションでの依存関係を解決しません:

私の容器には、以下のように設定されています。

+0

単一のコンテナが必要です。 –

+0

ありがとうございます。ソリューション全体のコンテナは1つだけですか?私のコンテナは次のように構成されています: var container = _container ?? (_container =新しいUnityContainer()); container.RegisterTypes(AllClasses.FromLoadedAssemblies()、WithMappings.FromMatchingInterface、WithName.Default); しかし、依存関係をWCFアプリケーションに注入しないでください。 – bluray

+1

WCFプロジェクトがリモートサーバー上にあり、WPFアプリケーションがクライアント上にある場合は、各側に1つのコンテナが必要です。 –

答えて

0

ソリューション内の各プロジェクトにユニティコンテナを配置する必要がありますか、ソリューション全体の依存関係を検出できるように1つのユニティコンテナを構成できますか?

どちらもありません。通常は、各スタートアッププロジェクトに独自のコンテナを作成し、その依存関係を設定します。複数のスタートアッププロジェクト(Webサービスとデスクトップアプリケーションの両方)があるので、コンテナを設定する場所は複数あります。これはComposition Rootという概念に関連しています。詳細はComposition Root reuseをご覧ください。

関連する問題