【发布时间】:2016-02-02 11:23:03
【问题描述】:
我有几个使用 Ninject 进行 IoC 的 PCL。现在我正在尝试使用 MvvmCross 创建一个 Android Xamarin 项目。 guide 说我可以按照两个步骤继续使用 Ninject 而不是 MvvmCross 实现。
这是我的 Setup.cs:
public class Setup : MvxAndroidSetup
{
...
protected override IMvxIoCProvider CreateIocProvider()
{
return new NinjectMvxIocProvider(... some NinjectModule[]...);
}
}
而我拿了 NinjectMvxIocProvider here 的实现。
对我来说看起来还不错,但是会导致我布局中的所有视图都出现这种输出:
MvxBind:Error: 70.85 View type not found - EditText [0:]
MvxBind:Error: 70.85 View type not found - EditText
11-02 15:56:05.872 I/mono-stdout( 4824): MvxBind:Error: 70.85 View type not found - EditText
并且绑定不起作用,尽管 ViewModel 是通过正确的服务实现正确创建的。
如果我从Setup.cs 中删除override IMvxIoCProvider CreateIocProvider(),则绑定有效。
这个实现有什么我看不到的问题吗?也许有人有另一个实现并准备分享?
【问题讨论】:
-
我认为这是 ninject 包装器中的一个错误 - 它为两个关键回调方法提供了空实现 - 请参阅 github.com/migrap/Cirrious.MvvmCross.Ninject/blob/master/src/… - 您可以通过编辑包装器来存储回调来解决这个问题 - 然后使用一些在构建过程的最后一步调用所有回调的机制。
-
@Stuart,这正是我在阅读您的评论之前所做的!我的灵感来自您的
MvxSimpleIoCContainer。非常感谢!
标签: android xamarin ninject mvvmcross