2013-08-15 3 views
0

인터페이스에서 코드 계약을 사용하고자합니다. 우리는 커다란 인터페이스 계층 구조를 가지고있어 계약 클래스에 엄청난 중복이 생깁니다.인터페이스 계약 클래스의 반복 방지

우리는 인터페이스가 IX이며 (다른 인터페이스를 상속 함) 약 50 개의 메소드가 있습니다. IX에서 파생 된 여러 인터페이스가 있습니다. 인터페이스 IY은 두 가지 방법 만 추가하여 IX에서 상속됩니다. IY에 대한 계약 클래스를 추가하려면 50 가지 이상의 메소드를 모두 참조해야합니다. 나중에 IX을 수정하기로 결정한 경우 IX에서 상속하는 모든 인터페이스에 대한 모든 계약 클래스를 변경해야합니다. 이는 개발자가 변경하지 못하게합니다.

이 중복을 피할 수있는 방법이 있습니까?

+2

텍스트가 너무 많습니다. 코드 없음. 관련 코드를 게시하십시오. 나는 그 모든 것을 읽기에는 너무 게으른 편이다. –

+0

계약 클래스 상속을 시도 할 수 있습니다 – alex

+1

50 개의 메소드가있는 인터페이스가 있으며 여전히 코드를 깨끗하게 유지하는 데 관심이 있습니다. –

답변

0

나는 이것이 가능하다고 생각하지 않습니다. 하나의 인터페이스 계약 클래스를 다른 클래스에서 파생시킬 수 없으며 인터페이스 계약 클래스는 System.Object 이외의 기본 클래스를 가질 수 없습니다. 그래서 네가 붙어 있다고 생각해. 가장 좋은 방법은 코드 생성 도구 또는 복사 및 붙여 넣기가 많이 필요할 수 있습니다.

+0

그것이 내가 생각한 것입니다 (확실하지는 않지만). 나는 잠시 동안 T4를 보려고했다. 어쩌면 지금은 시간이다. – Rob

0

필자가 작성한 일부 코드에는 동일한 문제가 있지만 동일한 척도는 아닙니다. 내 솔루션은 IDE/ReSharper를 사용하여 NotImplementedException 스텁을 새 메서드에 추가하거나 abstract override이라고 씁니다. 기본 클래스에 정의 된 모든 계약은 예를 들어 IY 계약 클래스에서 Contract.Requires을 추가하려고하면 CC 도구에서 큰 소리로 알려줍니다.