我有一个具有 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 依赖项,并且必须实例化第二个类并从第一个类调用。我怎么做?
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