具有多个项目的 MVC 体系结构 ASP.NET 依赖注入



考虑到以下架构,我想知道如何处理依赖注入。

我有 3 个项目


MyProject.UI
MyProject.Business MyProject.SomeOtherThing

StructureMap 在 MyProject.UI 中用于依赖注入。

public static class Bootstrapper
{
    public static void Run()
    {
        ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
        ObjectFactory.Initialize(x =>
        {
                x.For<ISomeClass>().Use<SomeClass>();
        }
    }
}

我的问题是,MyProject.SomeOtherThing中有一些类被MyProject.Business使用。这些类设置为使用 DI。

namespace MyProject.SomeProject
{
    public SomeClass
    {
        public ISomeDependency SomeDependency { get; set; }
        public SomeClass (ISomeDependency someDependency)
        {
            SomeDependency = someDependency;
        }
    }
}

业务层使用该类并公开使用名为 SomeService SomeClass 的服务。

为了使 DI 注册正常工作,MyProject.UI必须具有对 MyProject.SomeOtherThing 的引用。

我想避免这种情况。理想情况下,UI 项目将仅具有对 MyProject.Business 的引用。

处理这种情况的最佳方法是什么?是将 DI 配置移动到MyProject.Business吗?还是我错过了什么?

谢谢!

我们创建了一个新项目"绑定",它引用了所有内容并具有 Ninject 绑定。 这样,您的 UI 项目只需要了解业务层和绑定层,而不需要了解 SomeOtherThing 层。

我在当前的项目中遇到了同样的问题,因为我有一个用于UI项目的核心程序集(asp.net MVC,asp.net Web api和 asp.net mvc的可移植程序集在单独的程序集中),所以我决定将DI的所有配置放在我的Web.Core程序集中。 没有其他方法可以处理它。现在,您的情况不需要在MyProject.UI中引用MyProject.SomeOtherThing,如果您不需要它,则应用程序的DI配置的最佳位置是MyProject.Business。你只需要在MyProject.UI中注册配置,仅此而已

最新更新