我想知道如何處理依賴注入考慮以下體系結構。在多個項目的ASP.NET MVC體系結構中的依賴注入
我有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;
}
}
}
業務層消耗類,並公開使用SomeClass
稱爲SomeService
服務。
爲了使DI註冊工作,MyProject.UI
必須參考MyProject.SomeOtherThing
。
我想避免這種情況。理想情況下,UI項目只能參考MyProject.Business
。
處理這種情況的最佳方法是什麼?是否將DI配置移動到MyProject.Business
?還是有什麼我失蹤?
謝謝!
StructureMap有一個很好的功能可以按照慣例進行綁定。你應該看看。如果你不喜歡它,那麼你可以將依賴關係解析轉移到外部類庫(在分層應用程序的基礎結構中),然後從UI層調用一些「初始化」方法。 – Cosmin
相關:https://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application – Steven