【问题标题】:Unity resolving by nameUnity 按名称解析
【发布时间】:2010-12-24 15:11:15
【问题描述】:
我有以下服务类构造函数:
public class Service : IService
{
private readonly IRepository _repository;
public Service(IRepository repository)
{
_repository = repository;
}
// ...
}
IRepository 有两个命名实现。我想解决 IService 但需要设置应该使用哪个 IRepository 实现(服务应该是灵活的,我不能将 Dependency 属性放入 IRepository 构造函数参数)。
Unity有什么方法可以实现吗?
【问题讨论】:
标签:
c#
.net
unity-container
【解决方案1】:
您可以使用统一配置部分来实现此目的。
检查this链接。
在配置部分,您可以按如下方式指定映射。
<type type="IMyService" mapTo="MyDataService" name="DataService">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement,
Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="connectionString" parameterType="string">
<value value="AdventureWorks"/>
</param>
<param name="logger" parameterType="ILogger">
<dependency />
</param>
</constructor>
<property name="Logger" propertyType="ILogger" />
<method name="Initialize">
<param name="connectionString" parameterType="string">
<value value="contoso"/>
</param>
<param name="dataService" parameterType="IMyService">
<dependency />
</param>
</method>
</typeConfig>
</type>