나는 다음과 같은 서비스 인터페이스가 있습니다방법은 컨트롤러 액션 메소드에서 사용할 수 없습니다
public class GrantApplicationService : IGrantApplicationService
{
public IEnumerable<GrantApplication> GetAll()
{
// Code here
}
public EditGrantApplicationViewModel CreateEditGrantApplicationViewModel()
{
// Code here
}
}
내 컨트롤러 :
public class GrantApplicationController : Controller
{
private IGrantApplicationService grantApplicationService;
public GrantApplicationController(IGrantApplicationService grantApplicationService)
{
this.grantApplicationService = grantApplicationService;
}
public ActionResult Create()
{
// I am trying to create my view model like this and populate it with data
EditGrantApplicationViewModel viewModel = grantApplicationService.CreateEditGrantApplicationViewModel();
return View(viewModel);
}
}
여기
public interface IGrantApplicationService
{
IEnumerable<T> GetAll();
}
인터페이스의 내 구현
내 Create 메서드에서 볼 수 있지만 서비스를 통해 내 뷰 모델을 만들려고하지만 whe n을 클릭하십시오. CreateEditGrantApplicationViewModel을 선택하는 옵션이없는 것처럼 보이지만 GetAll 만 존재합니다. 왜 이런거야? 나는 모든 정확한 참조를 가지고있다.
GrantApplicationService 인스턴스를 주입합니다. –
그러나 정의에는 FindAll() 메서드 만 있습니다. 컴파일러는 컴파일 타임에 전달할 인터페이스의 구현을 알지 못합니다. 리플렉션을 통해 메소드를 호출해야합니다 (이 상황에서 안티 패턴이 됨) –