2014-12-22 3 views
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; } 
} 

. 하위 모델마다 인터페이스가 있어야합니까? 아니면 인터페이스에서 어떻게 든 숨길 수 있습니다. 서브 모델은 일부 데이터 만 가지고 있고 다른 기능은 거의 없으므로 숨기기 옵션이 있습니다.

+0

왜 일반 인터페이스를 사용하지 않습니까? IModel Brian

+0

"submodel"이라고 할 때'Submodel_ *'클래스가'Model'에서 파생되었다고 말하고 있습니까? 그렇다면 디자인 문제가있는 곳입니다. – itsme86

+0

@GrantWinney 그것은 어셈블리 의존성을 뒤집을 수 없기 때문에 해결책이 아닙니다. 모델을 사용하는 코드가 모델 인터페이스 어셈블리에만 의존하기를 원합니다. 인터페이스에서 서브 모델을 가지면 구현 어셈블리에 종속됩니다. – vines

답변

0

기본적으로 나는 모든 것을위한 인터페이스를 갖춰야했으며, 전용 어셈블리에 모여있었습니다. 그렇습니다. 거의 모든 모듈이 지금은 그것에 의존하지만, 지금까지 아무런 문제가 없었습니다 ...