これはios7とは関係ないようです
コード行
CreatableTypes(typeof(IMvxMessenger).Assembly)
.AsInterfaces()
.RegisterAsSingleton ();
意思:
- アセンブリ内のすべての作成可能な型 (つまり、パブリック コンストラクターを持つ非抽象型) を取得します。
- 次に、それらのインターフェースを見つけます
- 次に、新しいインスタンスを作成し、それをインターフェイスのシングルトン実装として登録します。
MvxSubscriptionToken
Messenger プラグインの場合、シングルトンとしてを新規作成して登録しようとすることも含まれIDisposable
ますが、パブリック コンストラクターがMvxSubscriptionToken
Guid を必要とするため失敗します (そして、MvvmCross にそれを提供する方法を伝えていないため、構築は失敗します)。
アセンブリに特定の型を登録するだけの場合は、通常、EndingWith("PostFix")
句を追加します - デフォルトの Mvx nuget テンプレートがServices
接尾辞として行うように。
アセンブリから単一の特定のクラスを登録したい場合は、次のように行うことがよくあります。
Mvx.RegisterSingleton<IThing>(new Thing());
ただし、プラグイン (IoC の上に配置された単なる規則ベースのルール セット) の場合、通常はEnsureLoaded()
、そのプラグインの PluginLoader のプラグイン マネージャーを呼び出す必要があります。
これを行う最も簡単な方法は、UI プロジェクトに Bootstrap ファイルを含めることです - N=8 の例を参照してください - https://github.com/slodge/NPlus1DaysOfMvvmCross/tree/master/N-09-Location%20And%20Message /Location.Touch/BootstrapEnsureLoaded
- アプリケーションの Setup は Reflection を使用してその Type を見つけ、プラグインを呼び出します。
MvvmCross の IoC の詳細については、https: //github.com/slodge/MvvmCross/wiki/Service-Location-and-Inversion-of-Control を参照してください。
プラグインの詳細については、https://github.com/slodge/MvvmCross/wiki/MvvmCross-pluginsを参照してください。