C# Windows 8.1应用商店应用程序中BL/DAL上的Caliburn Micro+DI
在我的Windows8.1商店应用程序中,我一直在为BL/DAL层添加依赖注入。我正在使用Caliburn Micro 2.0.0.0测试版和Windows 8.1应用商店。这是我试图使用CM构建的一个示例应用程序,具有复杂的结构,因此有一个业务逻辑层、数据访问层和表示层 构型管理自动负责UI下直接引用项目的DI;这是BLL。因此,从IBusinesInterface;我能够获得BLLClass实例。但是,由于BLL/DAL没有引导程序;我无法在业务层中注入DALClass实例IDataInterface类型。在UI项目中添加对DAL的引用可以解决这个问题,但无法达到分层的目的 我尝试为库添加引导程序;但是没有可从中继承的BootstrapperBaseC# Windows 8.1应用商店应用程序中BL/DAL上的Caliburn Micro+DI,c#,windows-8,dependency-injection,windows-8.1,caliburn.micro,C#,Windows 8,Dependency Injection,Windows 8.1,Caliburn.micro,在我的Windows8.1商店应用程序中,我一直在为BL/DAL层添加依赖注入。我正在使用Caliburn Micro 2.0.0.0测试版和Windows 8.1应用商店。这是我试图使用CM构建的一个示例应用程序,具有复杂的结构,因此有一个业务逻辑层、数据访问层和表示层 构型管理自动负责UI下直接引用项目的DI;这是BLL。因此,从IBusinesInterface;我能够获得BLLClass实例。但是,由于BLL/DAL没有引导程序;我无法在业务层中注入DALClass实例IDataInte
完整的源代码在这里共享-为什么添加对DAL的引用会破坏分层的目的 您需要在某个地方注册,例如引导程序,并且需要了解必须注册的所有类型 一种解决方案是将一些注册过程委托给BLL库中了解DAL类型的类,但我不确定为什么不能添加对DAL库的引用
如果您使用的是Ninject或Autofac或类似产品,他们有一个模块概念,可以从其他程序集加载,他们可以加载其他模块。您还必须使用覆盖
protected override IEnumerable<Assembly> SelectAssemblies()
{
var assemblies = base.SelectAssemblies();
//locate other dlls here, I do it in my app based on the namespace and extension
return assemblies.Concat(modules);
}