【发布时间】:2011-08-09 14:31:26
【问题描述】:
我有一个名为 IRepository 的接口,它有两个实现:
SqlRepository
SqlDualWriterRepository
第一个实现是 T 类型对象的常规 SQL 持久性实现。它依赖于 SqlConnectionStringProvider 的实例(顾名思义,它提供连接字符串,并将连接字符串名称作为构造函数参数)。
第二个是另一个内部使用两个 SQLRepository 依赖项的实现:
public class SqlDualWriterRepository<T> : IRepository<T>
{
private readonly IRepository<T> _primaryRepository;
private readonly IRepository<T> _secondaryRepository;
public SqlDualWriterRepository(
IRepository<T> primaryRepository,
IRepository<T> secondaryRepository)
{
_primaryRepository = primaryRepository;
_secondaryRepository = secondaryRepository;
}
}
我想要实现的是配置 StructureMap 以便在请求 IRepository 实例时,它将:
- 将 IRepository 解析为 SqlDualWriterRepository 的实例
- 将两个内部存储库解析为 SqlRepository 类型
- 对于在步骤 2 中实例化的两个 SqlRepository 对象,我需要以不同的方式解析 SqlConnectionStringProvider(在构造函数中提供不同的字符串参数)
我不知道如何实现这一点。 有没有办法使用属性或其他类型的配置来做到这一点?
我正在使用 StructureMap 2.6.2.0。
【问题讨论】:
标签: c# c#-4.0 dependency-injection structuremap