私はクラスのデフォルトタイプを定義するレジストリを追加するコンテナを持っています。Structure Mapでのオーバーライド登録を設定する方法4.4
TestRegistry : Registry{
For<Foo>.Use<Foo>();
}
このレジストリは、アプリケーションの初期化中にWebサービスの開始時に追加されます。アプリケーションに使用するすべてのレジストリを追加した直後に、Foo
クラスの登録をオーバーライドする必要があります。だから、私は私のコンテナ
var fromContainer = Container.Instance.GetInstance<Foo>();
からこのインスタンスを取得するために行くとき
Container.Instance.Configure(x =>
{
x.AddRegistry<TestRegistry>();
var fooInstance = new Foo();
x.For<Foo>.Use(fooInstance);
}
私はすぐに戻ってnull
を取得しています。すべてのインスタンスを取得する場合:
var fromContainer = Container.Instance.GetAllInstances<Foo>();
私は2つの結果を返します。登録ごとに1つ。意味あり。
Container.Instance.Configure(x =>
{
x.AddRegistry<TestRegistry>();
var fooInstance = new Foo();
x.For<Foo>.ClearAll().Use(fooInstance);
}
var fromContainer = Container.Instance.GetInstance<Foo>();
これはまだnull
を返します。私は第2の登録時に登録を解除しようとする場合は、
。私はここで何かを逃しているようだ。私はFoo
のすべての登録をクリアし、最後に登録したインスタンスを使用すると思います。
ご協力いただければ幸いです。前もって感謝します!