2

저는 다중 레이어 응용 프로그램을 만들고 가능한 한 레이어를 유지하려고하므로이 목적으로 IoC 컨테이너를 사용하고 있습니다. 어쨌든 this article으로 확장하여 비즈니스 로직 유효성 검사를 서비스 계층으로 이동하려고합니다. ModelState 자체에 대한 ModelStateWrapper 클래스의 종속성을 제외한 모든 종속성 문제를 해결할 수있었습니다. 내 수업은 다음과 같습니다.생성자 의존성 삽입 관리 (MS Unity)

public interface IValidationDictionary 
{ 
    void AddError(string key, string errorMessage); 
    bool IsValid { get; } 
} 

public class ModelStateWrapper : IValidationDictionary 
{ 
    private ModelStateDictionary _modelState; 

    public ModelStateWrapper(ModelStateDictionary modelState) 
    { 
     _modelState = modelState; 
    } 

    public void AddError(string key, string errorMessage) 
    { 
     _modelState.AddModelError(key, errorMessage); 
    } 

    public bool IsValid 
    { 
     get { return _modelState.IsValid; } 
    } 
} 

ModelStateWrapper 클래스는 MVC3 응용 프로그램의 Services 폴더에 있습니다. IValidationDictionary가 내 Services 레이어 내의 Abstract 폴더 안에있는 동안.

.RegisterType<IValidationDictionary, ModelStateWrapper>(
    new HttpContextLifetimeManager<IValidationDictionary>()) 

그래서, 지금은 IOC의를 사용하여 ModelStateWrapper 클래스에 ModelState 개체를 주입 할 수있는 일이 : 내 유니티 구성에서 나는 다음과 같은나요? 또는 컨트롤러에서 ModelStateWrapper를 명시 적으로/수동으로 인스턴스화하고 ModelState를 인수로 전달해야합니까?

미리 감사드립니다.

+0

가능한 중복 도움이되기를 바랍니다

에서이 부트 스트 래퍼를 호출 [ASP에서 의존성 주입 루프 문제를 해결하는 좋은/적절한 방법이 있나요. NET MVC 연락처 관리자 자습서?] (http://stackoverflow.com/questions/1453128/is-there-a-good-proper-way-of-solving-the-dependency-injection-loop-problem-inthth) –

+0

분명히 그렇습니다! 전에 그 실을 보지 못했습니다. 그것을 지적 주셔서 감사합니다. 하지만 여전히 내 문제를 해결하지 못합니다 .../ – Kassem

+0

참조 된 기사의 주어진 접근 방식에 대한 의견은 다음과 같습니다. http://stackoverflow.com/questions/4776396/how-to-inject-a -model-state-wrapper-with-ninject/4851953 # 4851953. – Steven

답변

0

여러분은 modelstatewrapper 클래스를 공통 어셈블리로 옮겨야한다고 생각합니다. 공통 어셈블리는 도메인 클래스, dto, 서비스 정의 등을 포함 할 수 있습니다. 공통 어셈블리의 모든 유형을 컨테이너에 등록하는 부트 스트 래퍼 클래스를 생성합니다. 등의 서비스, BL 층, 나는 이것이

인사의