7

提供され、「箱から出して」動作するライブラリのコア セットがあります。つまり、サービスはすべて内部で配線されています。(ライブラリ自体を変更せずに) コア ライブラリを変更できるようにしたいと考えています。

そうは言っても、SimpleInjector に Unbind/Rebind のサポートはありますか? コンテナに公開されているメソッドはありませんでした。リフレクションでアクセスできる登録のプライベート辞書を見つけました。

実行時にリフレクションを使用して、このプライベート ディクショナリから項目を削除できない (再度追加する) ことができない理由を誰かが見ていますか? 私が見逃している方法はありますか?

4

1 に答える 1

5

登録の削除はできません。ただし、登録のオーバーライドは可能です。これを許可するには、コンテナーにフラグを立てる必要があります。

var container = new Container();

container.Register<IService, FirstService>();

container.Options.AllowOverridingRegistrations = true;

// Replaces the former registration
container.Register<IService, AnotherService>();
于 2013-01-29T14:56:51.287 に答える