Единство и Дженерики - PullRequest
5 голосов
/ 17 мая 2011

как мне зарегистрировать и разрешить универсальный объект / интерфейс в Unity?Я пытаюсь держаться подальше от файла конфигурации.

Я ищу что-то вроде

IEnterpriseClient<IInterface1>, чтобы разрешить в EnterpriseClient<IInterface1>

Подпись класса

class EnterpriseClient<T> : IEnterpriseClient<T> where T : class

Спасибо!

Ответы [ 2 ]

7 голосов
/ 17 мая 2011

Это в точности то, что вы думаете:

container.RegisterType<IEnterpriseClient<IInterface1>, EnterpriseClient<IInterface1>>( ... );

Это если вы хотите, чтобы только этот конкретный закрытый генерик был зарегистрирован.Для открытого универсального (не только IInterface1) вы можете сделать:

container.RegisterType(typeof(IEnterpriseClient<>), typeof(EnterpriseClient<>), ... );

Вы упомянули, что пробовали это - что не работает?

2 голосов
/ 17 мая 2011

Посмотрите на этот вопрос для конфигурации XML: Unity 2.0, регистрирующий универсальные типы через XML

и http://davidhayden.com/blog/dave/archive/2008/03/25/UnityDependencyInjectionOpenGenericTypes.aspx для конфигурации кода.

...