0

我正在使用 Galasoft MVVM Toolkit 和 ServiceLocator 在我的应用程序中管理我的服务。我想管理两种不同的服务实现。应该在调试/设计模式下注入存根实现,在其他情况下应该注入真正的实现。伪代码可以是:

public TmepServiceLocator(){
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

    //If DEBUG/DESIGN MODE
    //SimpleIoc.Default.Register<IMyService>(() => new MyServiceStub());
    //ELSE
    SimpleIoc.Default.Register<IMyService>(() => new MyServiceImpl());
}
public IMyService MyService{
    get{return ServiceLocator.Current.GetInstance<IMyService>();}
}

我怎样才能做到这一点 ?
在开发时(并且不使用 Spring),您是否有使用服务存根的解决方法?

4

1 回答 1

0

在 MVVM Light 中,您通常使用 ViewModelLocator 类型的对象来执行依赖注入。

您可以使用静态方法 ViewModelBase.IsInDesignModeStatic。

if (ViewModelBase.IsInDesignModeStatic)
{
  SimpleIoc.Default.Register<IMyService, StubServiceImplementation>();
}
else
{
SimpleIoc.Default.Register<IMyService, RealServiceImplementation>();
}

除此之外,您可以使用条件

#if DEBUG
SimpleIoc.Default.Register<IMyService, StubServiceImplementation>();
#else
SimpleIoc.Default.Register<IMyService, RealServiceImplementation>();
#endif
于 2015-02-23T16:22:32.480 回答