Windows 8.1 Store应用程序中的BL / DAL上的Caliburn Micro + DI

时间:2014-04-08 07:14:15

标签: c# windows-8 dependency-injection windows-8.1 caliburn.micro

我坚持在Windows 8.1 Store应用程序中将依赖注入添加到BL / DAL层。我使用Caliburn Micro 2.0.0.0 Beta和Windows 8.1 Store应用程序。这是一个示例应用程序,我试图构建使用CM,结构复杂 - 所以有业务逻辑层,数据访问层和表示层。

CM自动处理直接在UI下引用的项目的DI;这是BLL。所以,从IBusinessInterface;能够获得BLLClass实例。但是,因为BLL / DAL没有Bootstrapper;我无法在业务层中注入DALClass实例(IDataInterface类型)。在UI项目中添加对DAL的引用将解决问题,但是无法实现分层的目的。

我尝试为库添加Bootstrapper;但是没有BootstrapperBase可以继承!

enter image description here

完整的源代码在此处共享 - https://www.dropbox.com/s/5dnhs2sp3za5dj6/SampleStoreCMApp.zip

2 个答案:

答案 0 :(得分:0)

为什么添加对DAL的引用"会破坏分层的目的"?

您需要在某个地方拥有Composition Root,例如引导程序,需要知道所有必须注册的类型。

一种解决方案是将一些注册过程委托给知道DAL类型的BLL库中的类,但我不确定为什么你不能添加对DAL库的引用。

如果你正在使用Ninject或Autofac(或类似的),他们有一个模块的概念,可以从其他程序集加载(他们可以加载其他模块)。

答案 1 :(得分:0)

您还必须使用覆盖

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);

        }