Мой запрос похож на этот .
Я использую MvvmLight, и информация Viewmodel отображается правильно для времени разработки и выполнения.Однако я хочу абстрагировать его в класс Service.Итак, у меня есть Mock Service и реальная служба, которые оба реализуют IService.
в коде для app.xaml. Я проверяю на время разработки, затем вызываю метод на моем загрузчике службы в зависимости от того, что возвращает проверка.*
if (IsInDesignModeStatic)
{
ServiceLoader.LoadDesignTimeServices();
}
else
{
ServiceLoader.LoadRunTimeServices();
}
public sealed class ServiceLoader
{
private ServiceLoader()
{
}
public static void LoadDesignTimeServices()
{
ServiceContainer.Instance.AddService<IQuestionsService>(new dt.QuestionsService());
}
public static void LoadRunTimeServices()
{
ServiceContainer.Instance.AddService<IQuestionsService>(new rt.QuestionsService());
}
}
Это прекрасно работает во время выполнения, но не во время разработки.Если я на самом деле использую конкретную реализацию designtime в моей viewmodel:
if (IsInDesignMode)
{
//var s = Infrastructure.GetService<IQuestionsService>();
var s = new ReadmissionTrackingApplication.Client.Services.DesignTime.QuestionsService();
QuestionCollectionView_Refresh(s.getQuestions());
}
else
{
//Listens for New Questionairre request. It receives the current ReadmitPatientResult
Messenger.Default.Register<fnReadmitPatientList_Result>(this, ReceiveNewQuestionairreRequest);
//TODO for testing only
ReceiveNewQuestionairreRequest(null);
}
, она появляется в Blend.Что мне нужно сделать, чтобы разрешить доступ к фиктивному сервису в blend?Кажется, я помню, что читая, мне нужно каким-то образом добавить загрузчик сервисов в ресурсы моего приложения, аналогично тому, как это делается с моделями представления ... но я не знаю точно, как это нужно сделать, я предполагаю, что это отличается от того, как выполняется виртуальная машина,потому что я не обращаюсь к сервису в представлении, но из модели представления.