Разрешение параметров конструктора с использованием того же имени, которое использовалось для разрешения объекта - PullRequest
1 голос
/ 18 января 2010

Скажем, у меня есть этот класс

public class MyObject : IObject
{
    public MyObject(IObject2 object2)
    {

    }
}

, который я разрешаю следующим образом:

Container.Resolve<IObject>("SomeName");

Можно ли настроить Unity так, чтобы всякий раз, когда IObject разрешался с использованием любого имени,IObject2 также будет разрешен с тем же именем (при условии, что оно было зарегистрировано с таким именем)?

Я ищу способ, который не использует InjectionConstructor, так как я не хочу обновлять его длякаждое новое имя, которое я ввожу.

1 Ответ

2 голосов
/ 18 января 2010

Это должно сработать:

container.RegisterType<IObject2, MyObject2>("someName");
// ...
container.RegisterType<IObject, MyObject>("someName",
    new InjectionConstructor(
        new ResolvedParameter<IObject2>("someName")));

Если вы хотите зарегистрировать больше имен, вы всегда можете рассмотреть упаковку этого небольшого фрагмента в метод многократного использования, который принимает имя в качестве параметра ввода.

У меня сейчас нет Unity, так что это более или менее из памяти ...

...