我正在试一试 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 服务?
谢谢,总体而言,在框架上做得很好,我真的很喜欢它的工作方式(除了这一点,我还不太理解)
托比