MVC4 アプリケーション内で、ユニティという名前の型の登録を解決する方法を理解したいと思います。
「Unity 3.0」と「Unity boostrapper for ASP.NET MVC」を使用しています。
Unity が DependencyResolver に登録されていることを理解しているため、依存関係リゾルバー メソッドを使用して、登録された型のインスタンスを取得できます。
これは、単純な登録を取り戻したい場合にうまく機能します。
例えば
//Registration
container.RegisterType<IFootballer, VanPersey>();
//Instantiation
var footballer1 = DependencyResolver.Current.GetService<IFootballer>();
しかし、名前付き型登録への参照を取得したい場合、IDependencyResolver インターフェイスが名前付き型登録インスタンスを取得するための適切なメソッドを提供しているようには見えません。
Unity コンテナーに直接アクセスできる場合は、次のようにします。
//Registration
container.RegisterType<IFootballer, VanPersey>("Attacker" );
container.RegisterType<IFootballer, NemanjaVidic>("Defender");
//Instantiation
unityContainer.Resolve<IFootballer, Footballer>("Attacker")
私の質問は、名前付き登録のインスタンスを取得するために MVC アプリで unity を使用する最も適切な方法は何ですか。つまり、ユニティ コンテナーにアクセスできますか?
この質問は本番環境の実装に関するものではないことに注意してください。私はUnity(およびIoCコンテナを初めて)を見て、理解を深めるために結び付けています。
本番環境では、コントローラーのコンストラクターを介して依存関係を渡す可能性が高いことを理解していますが、実際には別の質問につながります。
次の例で、コントローラー コンストラクター インジェクションを使用するときに、どの名前付き型を解決したいかを示すにはどうすればよいでしょうか。
//Registration
container.RegisterType<IFootballer, VanPersey>("Attacker" );
container.RegisterType<IFootballer, NemanjaVidic>("Defender");
//Instantiation
public HomeController(IFootballer footballer)