Я пытаюсь добавить зависимость к свойству класса, используя Unity Configuration, а также типы, которые я пытаюсь внедрить, являются общими. У меня был "Google" и я обнаружил, что мне нужно использовать синтаксис '1. Я следую руководству Дэвида Хейдена о блоке приложения проверки, НО, вместо того, чтобы программно регистрировать тип, который я настраиваю, через файл конфигурации.
<typeAliases>
<!-- Lifetime manager types -->
<typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager,Microsoft.Practices.Unity" />
<typeAlias alias="external" type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager,Microsoft.Practices.Unity" />
<typeAlias alias="IValidator`1" type="MySerivice.IValidator`1,MyService" />
<typeAlias alias="VABValidator`1" type="MySerivice.VABValidator`1,MyService" />
<typeAlias alias="MyService" type="MySerivice.MyService,MyService" />
</typeAliases>
Тогда я регистрирую сопоставления и свойства здесь:
<types>
<type type="MyService">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement Microsoft.Practices.Unity.Configuration">
<property name="Validator" propertyType="IValidator`1"/>
</typeConfig>
</type>
<type type="IValidator`1" mapTo="VABValidator`1">
<lifetime type="singleton" />
</type>
</types>
Внутри MyService у меня есть следующее свойство:
private IValidator<RegExpressionObject> validator;
[Dependency]
public IValidator<RegExpressionObject> Validator
{
get { return validator; }
set { validator = value; }
}
Когда я запускаю это, я получаю следующее исключение, которое действительно заставляет меня почесать голову:
System.InvalidOperationException:
Свойство Validator по типу MyService
относится к типу IValidator'1 и не может быть
вводится со значением типа
IValidator'1
Любая помощь очень ценится.