我正在尝试将 TinyIoc 与 MvvmCross 集成。我按照 https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#sharing-the-ioc-container-that-mvvmcross-uses的说明进行操作
并创建了一个适配器
public class TinyIoCMvxIoCAdapter : MvxSingleton<IMvxIoCProvider>, IMvxIoCProvider
{
...
}
实现所有方法并将其转发到 TinyIoC 容器。这是非常直接的,我只需要实现一些额外的代码来在订阅某些内容时触发回调
void CallbackWhenRegistered<T>(Action action)
void CallbackWhenRegistered(Type type, Action action)
我更改了 Setup.cs
protected override IMvxIoCProvider CreateIocProvider()
{
var provider = TinyIoCAdapterSetup.CreateIocProvider();
return provider;
}
和
public class TinyIoCAdapterSetup
{
public static IMvxIoCProvider CreateIocProvider()
{
var container = TinyIoCContainer.Current;
container.AutoRegister(t => t == typeof(IMvxViewModel));
return new TinyIoCMvxIoCAdapter(container);
}
}
这一切都很好。我可以看到在 TinyIoc 上调用了寄存器,事情也得到了解决。
插件不起作用。我们正在使用 Messenger 插件和 TinyIoC 集成,当一个 ViewModel 被解析并注入 IMvxMessenger ctor 时,无法解析 IMvxMessenger。我可以看到 MessengerPluginBootstrap 是由 Mvx 创建的,但我看不到注册 IMvxMessenger 的调用。
有人知道我做错了什么吗?