【发布时间】:2018-11-24 07:24:15
【问题描述】:
我有一种情况,我想在运行时在“FakeService”和“RealService”之间切换。
我的视图模型
public class BookingViewModel
{
private readonly IBookingService bookingService;
public WelcomePageViewModel(
INavigationService navigationService,IBookingService bookingService)
{
this.bookingService= bookingService;
}
}
在我的 App.xaml 中,我执行以下操作:
private IContainer container;
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
container = containerRegistry.GetContainer();
RegisterRealServices()
}
private void RegisterRealServices()
{
container.Register<IBookingService, RealBookingService>(Reuse.Singleton);
}
用户现在按下一个菜单选项来使用假服务。所以取消注册真实服务并使用假服务。
但是我在下面所做的似乎不起作用,因为 我不断被重定向到“RealBookingService”而不是“FakeBookingService”
我该怎么做?
private void RegisterFakeServices()
{
container.Unregister<IBookingService>();
container.Register<IBookingService,FakeBookingService>(
Reuse.Singleton,
ifAlreadyRegistered: IfAlreadyRegistered.Replace);
}
问题:是否可以在运行时切换服务实现?你如何使用 DryIoc 来做到这一点?
【问题讨论】:
标签: c# dependency-injection xamarin.forms dryioc