我正在尝试使用 Unity Configuration 向类属性添加依赖项,并且我尝试注入的类型是通用的。我有一个“谷歌”,发现我需要使用 '1 语法。我正在关注 David Hayden 关于验证应用程序块 BUT 的教程,而不是以编程方式注册我通过配置文件设置它的类型。
<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:MyService 类型上的属性 Validator 属于 IValidator'1 类型,不能注入 IValidator'1 类型的值
任何帮助是极大的赞赏。