현재 MVC3을 사용하는 웹 응용 프로그램을 개발 중입니다. MVC3 프로젝트는 서비스 계층을 통해 애플리케이션 로직에 액세스합니다. 서비스 계층은 UnitOfWork 패턴을 통해 액세스되는 저장소를 사용하여 데이터베이스에 액세스합니다.서비스 클래스에 대한 종속성 주입이 컨트롤러에 주입되었습니다.
MVC3 프로젝트에 서비스를 삽입하기 위해 StructureMap을 설치했습니다. 예제 컨트롤러 지금이
public class AccountManagementController : Controller
{
IAccountService accountService;
public AccountManagementController(IAccountService accountService)
{
this.accountService = accountService;
}
과 같을 것이다, 내 문제는 내 AccountService에 클래스 구조의 맵을 만들 때 UnitOfWork에 주입 가질 필요가 있다는 것입니다. 현재 저는 2 개의 컨트롤러를 가지고 있습니다. 하나는 인터페이스를 사용하고 다른 하나는 구체적인 클래스를 인스턴스화합니다.
public class AccountService : IAccountService, IDisposable
{
private IUnitOfWork unitOfWork;
internal AccountService(IUnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public AccountService()
{
this.unitOfWork = new UnitOfWork();
}
이것은 코드 냄새처럼 보입니다. 이것을 처리하는 더 정확한 방법이 있습니까?
덕분에, AFrieze
기본 생성자를 삭제하십시오 ... –
StructMap 구성을위한 유창한 인터페이스가 수년 동안 변경되어서 어떤 코드가 어떤 버전에서 작동하는지 구체적으로 알지 못합니다. 그러나 필요하다면 부트 스트 래퍼 코드에 특정 'IUnitOfWork' 구현체를 사용하도록 지시 할 수 있어야합니다. 여기 좀보세요 : http://stackoverflow.com/q/289512/328193 – David
고마워, 내가 살펴 보겠습니다. 이것은 내가 일반적으로 피해야 할 내 웹 사이트에서 내 DAL에 대한 참조를 요구할 것입니다. – AFrieze