Castle Monorail의 Databinder/SmartDispatcherController를 인터페이스 인 속성을 포함하는 유형에 바인딩하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/306103

문제

우리는 인터페이스를 사용하여 도메인 모델에서 엔터티 클래스를 나타냅니다. LinqToSQL을 사용하기 때문에 이들의 구체적인 구현이 있습니다. 우리는 서비스 계층이 새로운 엔티티를 인스턴스화하는 데 사용하는 각 LinqToSQL 클래스에 공장 메소드를 추가했습니다 (컨트롤러의 데이터 바인드 속성과는 반대로).

Monorail의 기본 데이터베이너 구현은 인터페이스로 정의 된 속성을 무시합니다.

이상적으로는 Monorail의 데이터 계층 클래스를 인스턴스화하고 싶지 않습니다. 인터페이스의 요점은 이러한 문제를 분리하는 것입니다.

또한, 우리는 실제로 층간에 번역하는 것이 아닌 다른 비 LinqtoSQL 콘크리트 클래스 세트를 만들고 싶지 않습니다.

a의 끝입니다 진짜 여기서 긴 하루; 누군가가 자비를 베풀고 Idatabinder의 일부에서 우리가 자신의 구현으로 과부하를 걸거나 우리가 시도 할 수있는 다른 접근법을 힌트해야한다고 우리를 가리킬 수 있습니까? ;-)

도움이 되었습니까?

해결책

iParameterBinder를보고 있어야합니다. 보세요 내가 주제에 대해 작성한 게시물

다른 팁

Ken이 지적했듯이 귀하의 아이디어는 사용자 정의 IPARAMETERBINDER로 구현할 수 있습니다.

해결책은 IOC를 사용하는 것입니다.

  • 인터페이스에서 양식의 구체적인 인스턴스를 해결
  • 그런 다음 idatabinder를 사용하여 인스턴스를 요청 매개 변수에 바인딩합니다.

다른 하나는 idictionaryAdapter를 사용하는 것입니다.

  • 인터페이스에 대한 DTO 프록시를 생성하십시오
  • 그런 다음 idatabinder를 사용하여 DTO 프록시 인스턴스를 요청 매개 변수에 바인딩합니다.

NB : 인터페이스 인 경우 두 번째 옵션이 작동하지 않습니다.

  • 공개적이지 않다 (hum)
  • 방법이 있습니다
  • 또는 이벤트
  • 또는 Readonly 속성
  • 또는 setonly 속성

마지막으로, 컨트롤러 서명에 구체적인 클래스를 노출시키는 데 문제가 무엇인지 잘 모르겠습니다.

나는 응용 프로그램 계층 서비스에 정의 된 인터페이스를 구현하는 컨트롤러에 구체적인 형태를 사용하여 양쪽에 분리 된 우려를 가질 수 있습니다.

  • 컨트롤러 측은 HTTP 매핑 및 양식/명령의 첫 번째 레벨 데이터 검증입니다.
  • 응용 프로그램 계층 서비스는 양식/명령의 비즈니스 검증 및 처리입니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top