0

サードパーティのクラス ライブラリがあります。そのライブラリ内のクラスの 1 つに、複数のオーバーライドを持つコンストラクターがあります。

Unity に、パラメーターの少ないコンストラクターを使用してクラスを作成するように指示したいと思います (デフォルトでは、パラメーターの数が最も多いコンストラクターが選択されます)。これどうやってするの?

を使用できることはわかっていInjectionFactoryますが、オブジェクトのデリゲートを作成するよりも、Unity にオブジェクトを作成させる方が好きです。また、ソースにアクセスできる場合は、おそらく目的のコンストラクターに でラベルを付けることができますInjectionConstructorが、そうしません。それで、私の他の選択肢は何ですか?

4

1 に答える 1

1

使用できないためInjectionConstructorAttribute(前述のように、ライブラリはあなたのものではありません)、InjectionConstructorクラス(属性ではありません)を使用できます。がコンストラクターのパラメーターを構築してResolveいることを確認するには、自分自身を呼び出す必要があります。Unityこのようなもの:

IUnityContainer c = new UnityContainer()
    .RegisterType<IStuff, GoodStuff>()
    .RegisterType<StuffUser>(new InjectionConstructor(c.Resolve<IStuff>()));
于 2013-06-11T02:13:21.000 に答える