0
public class MyViewModel : ViewModelBase
{
public MyViewModel()
{
if (!IsInDesignMode)
{
throw new InvalidOperationException();
}
}
public MyViewModel(IDataProvider dataProvider)
{
Data = new ObservableCollection<IData>(dataProvider.GetData());
}
public ObservableCollection<IData> Data { get; private set; }
}
같은 뷰 모델 클래스가 지금은 약간의 디자인 타임 데이터를 생성 할 수 있습니다. 내 유닛 테스트에서는 이것을하기 위해 조롱 프레임 워크 (Moq)를 사용하고 있습니다. 내 App 프로젝트에서 IData의 모의 구현을 만들거나 Mocking 프레임 워크를 참조하고 사용해야한다는 사실을 좋아하지 않는다.
그런 시나리오에서 디자인 타임 데이터를 얻는 가장 좋은 방법은 무엇입니까?
편집 : 그것은 관련성하지만 2012 년
그래서 두 개의 새로운 클래스가'MyDesignViewModel'and 만들어 주위에 마법 방법은'MyData'in 내 응용 프로그램 프로젝트, 올바른 없다? – metacircle
'MyDesignViewModel' 그냥'MyData'에 대한 당신의 기존 구현을 사용할 수 있습니다 (게시 된 코드에서 볼 수 없습니다. 인터페이스를 참조하십시오), 구현에 종속성이 필요하지 않은 경우 (이유가 없습니다. 그것은 모든 경우의 98 %에 있어야합니다). 다른 모든 것은 (ViewModel 실제 작업과 관련이없는 종속성 또는 밀접한 결합) 우려를 섞거나 시스템을 너무 많이 사용하지 못하게합니다 (즉, ViewModel을 매개 변수없는 생성자로 인스턴스화 할 수있게 됨). DesignViewModel은 UI 디자이너를위한 뷰 모델과 다른 어셈블리에 상주 할 수 있습니다. – Tseng