DALに依存するクラスがあります。
public class FirstClass()
{
[Dependency]
public IDalType Dal { get; set; }
}
次のコマンドでクラスのインスタンスを作成できます。
UnityContainer c = new UnityContainer();
c.RegisterType<IDalType, DalType>();
FirstClass fc = c.Resolve<FirstClass>();
これにより依存関係が設定され、インスタンスを使用できます。これは、開始メインクラス(メインフォーム、メインViewModel)のようなものです。
今、私はSecondClass
再びDAL依存関係を持っており、その2番目のクラスをインスタンス化して最初のクラスから呼び出す必要があります。それ、どうやったら出来るの?
public class FirstClass()
{
[Dependency]
public IDalType Dal { get; set; }
public DoSomething()
{
??? SecondClass sc = App.UnityContainer.Resolve<SecondClass>();
}
}
最初のクラス内でUnityContainerを使用する場合、それはコンテナーとの結合になり、アプリケーションルートのどこかにIDAL-> DALをマップし、静的コンテナーを用意する必要があります。
コンテナとの結合が悪いこと、および静的マップを使用していることを読みました:http: //blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx