44

次のようなコンストラクタを持つクラスがあります。

public class Bar
{
    public Bar(IFoo foo, IFoo2 foo2, IFoo3 foo3, IFooN fooN, String text)
    {

    }
}

Bar を Unity に登録し、テキストに値を提供したい:

unity.RegisterType<Bar, Bar>(new InjectionConstructor("123"));

ただし、Bar には単一のパラメーター コンストラクターがないため、これを行うことはできません。

他のすべてのパラメーターResolvedParameter<IFooN>などを指定せずにテキストの値を提供する方法はありますか?

4

3 に答える 3

47

Unityはこれを箱から出して行うことはできません。あなたができる最善のことは:

container.RegisterType<Bar>(
    new InjectionConstructor(
        typeof(IFoo), typeof(IFoo2), typeof(IFoo3), typeof(IFooN), "123"));

または、 TecXプロジェクトがSmartConstructor提供するものを使用できます。このブログ投稿では、いくつかの背景について説明しています。

登録は次のようになります。

container.RegisterType<Bar>(new SmartConstructor("text", "123"));
于 2012-08-08T19:17:40.293 に答える