0

ヘルパー クラスを使用して型のインスタンスを挿入する必要があるシナリオがあります。私たちのシステムでは、現在 Unity を使用してそのオブジェクトをさまざまなレイヤーに注入しています。

これが私が現在持っているものです:

container.RegisterInstance<ITest, new Test()>();

しかし、その代わりに、インスタンスを作成するヘルパー クラスを使用したいと思います。

container.RegisterInstance<ITest, Helper.GetITestIntance()>();
4

2 に答える 2

6
container.RegisterType<ITest>(
    new ContainerControlledLifetimeManager(),
    new InjectionFactory(o => Helper.GetITestIntance()));
于 2012-08-23T08:41:32.443 に答える
0

これによると:http ://social.msdn.microsoft.com/Forums/en/wpf/thread/b71665b9-cc71-4c88-9776-6ccb4f871819直接的な方法はないようです。使用するインスタンスを登録するか、コンテナが必要なときに自分でインスタンス化する「タイプ」を登録することができます。「ファクトリ」を登録する方法はないようです。また、型登録メソッドはデリゲート/コールバックを取りません。

Container Extensionsを使用する方法があるかもしれません。インスタンスのクエリをインターセプトして、独自の応答を提供できるかもしれません。これは、読み始めるのに適した場所だと思います。

http://visualizationtools.net/default/unity-objectbuilder-part-i/
http://visualizationtools.net/default/unity-objectbuilder-part-ii/

編集:申し訳ありませんが、申し訳ありませんが、LifetimeManager登録パラメータを見落としました。これはまさにあなたが探しているもののようです: http: //tavaresstudios.com/Blog/post/Writing-Custom-Lifetime-Managers.aspx

したがって、LifetimeManagerの形式でファクトリを作成すると、作成はGetValueメソッドで行われ、タイプをこのマネージャに登録します。Unityはマネージャにオブジェクトインスタンスを要求します。

于 2012-08-23T08:17:34.040 に答える