【发布时间】:2015-10-01 09:52:49
【问题描述】:
在我看来,如何解决 XLabs 中的依赖关系有点令人困惑。
根据这里的示例项目是我如何注册依赖项(简化):
1) MainActivity.cs 中的平台依赖:
private void SetIoc()
{
var resolverContainer = new SimpleContainer();
resolverContainer.Register<IMediaPicker, MediaPicker>();
Resolver.SetResolver(resolverContainer.GetResolver());
}
2) 平台独立在App.cs:
public App ()
{
DependencyService.Register<ISettings, Settings>();
DependencyService.Register<FooViewModel>();
}
现在,解决依赖关系相当困难。预期的方法是通过构造函数注入来解决,它以异常结束:
public FooViewModel(IMediaPicker picker) {} // Exception
public FooViewModel(ISettings settings) {} // Exception
另一种但不是最佳的方法是通过 DependencyService / Resover 解决。但在这里我需要知道我必须使用哪个:
public FooViewModel()
{
_picker = Resolver.Resolve<IMediaPicker>();
_settings = DependencyService.Get<ISettings>();
}
这一切对我来说似乎都不是最佳选择(例如,对于单元测试)。有没有办法统一整个解析过程,最好是通过构造函数?
【问题讨论】:
标签: xamarin.forms xamarin.forms.labs xlabs