【问题标题】:Caliburn Micro + DI on BL/DAL in Windows 8.1 Store appWindows 8.1 Store 应用程序中 BL/DAL 上的 Caliburn Micro + DI
【发布时间】:2014-05-20 17:42:04
【问题描述】:

我一直坚持在我的 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 没有引导程序;我无法在业务层中注入 DALClass 实例(IDataInterface 类型)。在 UI 项目中添加对 DAL 的引用会解决问题,但会破坏分层的目的。

我尝试为库添加引导程序;但是没有可继承的 BootstrapperBase!

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

【问题讨论】:

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


    【解决方案1】:

    你还必须使用覆盖

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-01-02
        • 2014-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多