1. ホーム
  2. c#

[解決済み] UnityのResolve()メソッドにコンストラクタのパラメータを渡すことはできますか?

2023-02-20 21:37:24

質問

依存性注入にMicrosoftのUnityを使っているのですが、以下のようなことをしたいです。

IDataContext context = _unityContainer.Resolve<IDataContext>();
var repositoryA = _unityContainer.Resolve<IRepositoryA>(context); //Same instance of context
var repositoryB = _unityContainer.Resolve<IRepositoryB>(context); //Same instance of context

IDataContext context2 = _unityContainer.Resolve<IDataContext>(); //New instance
var repositoryA2 = _unityContainer.Resolve<IRepositoryA>(context2);

RepositoryA そして RepositoryB は、どちらもコンストラクタに IDataContext パラメータを取るコンストラクタがあり、Unity に渡したコンテキストでリポジトリを初期化させたいのです。また IDataContext はUnityに登録されていないことに注意してください(3つのインスタンスの IDataContext ).

どのように解決するのですか?

本日より、この機能が追加されました。

こちらの最新ドロップにあります。

http://unity.codeplex.com/SourceControl/changeset/view/33899

それに関する議論はこちら。

http://unity.codeplex.com/Thread/View.aspx?ThreadId=66434

container.Resolve<IFoo>(new ParameterOverrides<Foo> { { "name", "bar" }, { "address", 42 } });"