TinyIoc を MvvmCross と統合しようとしています。https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#ching-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 で register が呼び出され、問題が解決されていることがわかります。
機能しないのはプラグインです。Messenger プラグインを使用しており、TinyIoC 統合では、IMvxMessenger の ctor を挿入する ViewModel が解決されるときに、IMvxMessenger を解決できません。MessengerPluginBootstrap が Mvx によって作成されていることはわかりますが、IMvxMessenger を登録するための呼び出しが行われたことはわかりません。
私が間違っていることを誰かが知っていますか?