Castle Windsor: Зарегистрируйте открытые дженерики и более сложные типы с

Можно ли в Castle Windsor зарегистрировать открытые дженерики, где универсальным параметром является интерфейс.

т. е. я хочу иметь возможность разрешить IFruitFactory<IApple> и получить FruitFactory<Apple>? Я хотел бы сделать это для любого класса, который реализует IFruit и имеет интерфейс с именем = I (FruitName)

в данном случае Apple : IApple и IApple : IFruit


person Stuart L    schedule 31.05.2011    source источник
comment
Вам действительно нужен интерфейс IApple? Сценарий реальной жизни, который у вас есть, вероятно, более сложен, но над ним стоит подумать. Убедитесь, что вам нужен дополнительный уровень абстракции.   -  person Johann Blais    schedule 31.05.2011


Ответы (2)


Взгляните на ILazyComponentLoaders. .

person Krzysztof Kozmic    schedule 31.05.2011

Я не думаю, что это возможно.

Может быть, вы можете определить

IWindsorInstaller<T>

как-то специально для IFruitFactory‹T›?

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

person Roy Dictus    schedule 31.05.2011