如何在多级别层次结构中使用依赖注入? 例如: - 对于ModulePageClassServiceRepository如何在多级类层次结构中使用依赖注入?
public class ModuleClassViewModel
{
ModulePageClassServiceRepository _modulePageClassServiceRepository = null;
public ModuleClassViewModel(ModulePageClassServiceRepository modulePageClassServiceRepository)
{
_modulePageClassServiceRepository = modulePageClassServiceRepository;
}
public IList<ModulePageClassObject> ModuleClassPageHierarchy(int? modulePageClassID, string SecureKey)
{
return _modulePageClassServiceRepository.ModuleClassPageHierarchy(....);
}
}
和代码.......
public class ModulePageClassServiceRepository : IModulePageClassService
{
ServiceDAO _serviceDAO = null
public ModulePageClassServiceRepository(ServiceDAO serviceDAO)
{
serviceDAO = serviceDAO ;
}
public IList<ModulePageClassObject> ModuleClassPageHierarchy(ModuleClassPageHierarchyParameter moduleClassPageHierarchyParameter)
{
// call serviceDAO and return result
}
}
现在
按DI如果我们要使用ModuleClassViewModel那么我们首先需要注入ModulePageClassServiceRepository对象,对于ModulePageClassServiceRepository我们需要serviceDAO ....这个层次可以长到多级.... 承担测试类....
public class TestDI
{
public void TestMethod()
{
ServiceDAO objServiceDAO = new ServiceDAO();
ModulePageClassServiceRepository objModulePageClassServiceRepository = new ModulePageClassServiceRepository (objServiceDAO);
ModuleClassViewModel objModuleClassViewModel = new ModuleClassViewModel(objModulePageClassServiceRepository);
//call method of objModuleClassViewModel
}
}
这是使用依赖注入的正确方法。在这里我需要首先初始化完整的层次结构,所以我的问题是 - 我是否需要首先初始化这个完整的层次结构....或者是否有任何其他方式来调用ModuleClassViewModel类?
你应该使用这样团结,Autofac等一个DI容器如果配置正确,它会删除需要您手动注入依赖。另外,为你的类创建接口将促进DI过程,并使你的代码更加灵活。 –