0
프로젝트 리팩토링 과정에서이 상황이 발생했습니다.서브 모델이있는 모델의 추상화
public class Model
{
public Submodel_A SM { get; set; }
public Submodel_B SM { get; set; }
public Submodel_C SM { get; set; }
}
public class Submodel_A { /* contains only properties */ }
public class Submodel_B { /* contains only properties */ }
public class Submodel_C { /* contains only properties */ }
지금, 나는 별도의 어셈블리에 Model
를 이동해야합니다
여러 서브 모델을 포함하는 모델 클래스가있다. 이렇게하려면 모델에 인터페이스 (예 : IModel
)를 구현하고 싶습니다. 그러나 여기에서 나는 때문에 서브 모델로, 붙어 : 자신이 해결책이 아니다 Submodel_*
클래스를 사용하여 분명히
interface IModel
{
Submodel_A SM { get; set; }
Submodel_B SM { get; set; }
Submodel_C SM { get; set; }
}
. 하위 모델마다 인터페이스가 있어야합니까? 아니면 인터페이스에서 어떻게 든 숨길 수 있습니다. 서브 모델은 일부 데이터 만 가지고 있고 다른 기능은 거의 없으므로 숨기기 옵션이 있습니다.
왜 일반 인터페이스를 사용하지 않습니까? IModel –
Brian
"submodel"이라고 할 때'Submodel_ *'클래스가'Model'에서 파생되었다고 말하고 있습니까? 그렇다면 디자인 문제가있는 곳입니다. – itsme86
@GrantWinney 그것은 어셈블리 의존성을 뒤집을 수 없기 때문에 해결책이 아닙니다. 모델을 사용하는 코드가 모델 인터페이스 어셈블리에만 의존하기를 원합니다. 인터페이스에서 서브 모델을 가지면 구현 어셈블리에 종속됩니다. – vines