StructureMapコンテナを作成するとき、私は通常次のようなことをします。
var container = new Container(registry => {
registry.AddRegistry<MyRegistry>();
});
どこ
public class MyRegistry : Registry {
public MyRegistry() {
Scan(x => {
x.Assembly("My.Assembly.Name");
x.RegisterConcreteTypesAgainstTheFirstInterface();
}
}
}
ただし、これによりregistry.AddRegistry
、ブートストラッパーファイルに非常に多くの行が作成され、多くのプロジェクトにコピーされます。ライブラリをモジュール化できるように、構築されたコンテナを取得してそれにレジストリを追加するメソッドを呼び出せるようにしたいと思います。
私はこれを思いついた:
public static void Setup(ref Container container) {
container.PluginGraph.ImportRegistry(typeof(MyRegistry));
}
これは、レジストリがコンテナに適切に追加されるという点で機能しますが(container.WhatDoIHave()
前後の呼び出しで確認できます)、実際のマッピングは行われていないようです。つまり、インターフェイスは、で定義されているIFoo
具象クラスに登録されていません。Foo
My.Assembly.Name
ImportRegistry
との違いは何AddRegistry
ですか?私のSetup
方法は修正できますか?