【发布时间】:2013-01-15 11:49:40
【问题描述】:
我正在试一试 MVVMCross,看看它是否会在一些更大的项目中使用,这很棒。我喜欢导航、viewModel 位置和通用的跨平台方法,这正是我所需要的。但是,我有点坚持根据平台拆分一些依赖注入。
所以,我们有一个基本的应用程序,它带有一个共享的可移植库,它在启动时初始化服务引用:
public TwitterSearchApp()
{
InitaliseServices();
}
private void InitaliseServices()
{
this.RegisterServiceInstance<ITwitterSearchProvider>(new TwitterSearchProvider());
}
很好。这定义了将在所有平台上使用的服务实现。但是,如果我需要在不同平台上实现不同的实现,例如存储/缓存,核心要求是相同的,但在手机上的处理方式与平板电脑上的处理方式不同。
我认为它可能会进入安装程序的某个地方:
public class Setup : MvxBaseWinRTSetup
{
public Setup(Frame rootFrame): base(rootFrame)
{
}
protected override MvxApplication CreateApp()
{
var app = new TwitterSearchApp();//set platorm specific IoC here maybe?
return app;
}
protected override void AddPluginsLoaders(Cirrious.MvvmCross.Platform.MvxLoaderPluginRegistry loaders)
{ // or perhaps here?
loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Visibility.WinRT.Plugin>();
base.AddPluginsLoaders(loaders);
}
}
但我不确定。我已经看到了替换 ViewModel 定位器的参考,但是是否有类似的方法可以替换其他 IoC 服务?
谢谢,总体而言,框架做得很好,我真的很喜欢它的工作原理(除了这一点,我还不太理解)
托比
【问题讨论】:
标签: inversion-of-control mvvmcross