다음 아키텍처를 고려하여 종속성 주입과 관련하여 궁금한 점이 있습니다. 여러 프로젝트가있는 ASP.NET MVC 아키텍처의 종속성 삽입
는 I 3 개 프로젝트 StructureMap가MyProject.UI
에 의존성 주입에 사용되는
MyProject.Business
MyProject.SomeOtherThing
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 레이어에서 "Initialize"메소드를 호출 할 수 있습니다. – Cosmin
관련 항목 : https://stackoverflow.com/questions/9501604/ioc-di-why-do-i-have-to-reference-all-layers-assemblies-in-entry-application – Steven