2013-08-05 2 views
1

UnityMvc와 함께 Unity Application Block을 사용하고 있습니다.Unity :이 객체에 대해 정의 된 매개 변수없는 생성자가 없습니다.

public UnitOfWork(Context Context) 
    { 
     this.context = Context; 
    } 

하고 "저장"방법 :

public void Save() 
    { 
     this.context.SaveChanges(); 
    } 

단결 시도

public ActionResult Add(UnitOfWork UnitOfWork) 
    { 
     Person p = new Person(); 
     p.Code = "1202"; 
     p.City = new City() { Code = "21", Name = "Paris" }; 
     UnitOfWork.Save(); 

     ViewBag.Message = "Done."; 

     return View(); 
    } 

의 UnitOfWork의 매개 변수는이 같은 생성자가 : 나는 액션이있는 컨트롤러라는 이름의 HomeController이 "추가"작업에 대한 UnitOfWork 개체를 생성하면 다음 오류가 발생합니다.

이 객체에 대해 정의 된 매개 변수없는 생성자가 없습니다.

UnitOfWork는 "추가"작업에 대한 매개 변수 자체이므로 매개 변수없는 생성자가 있어야합니다.

사실인가요 아니면 어떤 신체에 해결책이 있습니까?

+0

생성자를 표시하십시오. 또한 일반적으로 액션 메소드를 통해 서비스를 삽입 할 수 없으며 삽입해서는 안된다는 점에 유의하십시오. 대신 생성자를 사용해야합니다. – Steven

+0

예, 문제는 생성자가 없다는 것입니다. 모델 바인더는 작업 매개 변수 객체를 생성합니다. – user2653400

+0

매개 변수없는 생성자가없는 형식을 만들려면 사용자 지정 ModelBinder를 작성할 수 있습니다. –

답변

1

MVC 모델 바인딩은 값을 작업 메소드에 주입하는 것을 처리합니다. 특별히 제작 된 사용자 정의 모델 바인더를 등록하지 않으면 Unity (또는 해당 DI 컨테이너)는 서비스를 작업 방법에 삽입하지 않습니다.

Unity (및 기타 DI 컨테이너)는 유형의 생성자에만 서비스를 주입하며 이것은 종속성 주입을 수행하는 권장 방법입니다.

관련 문제