C# 为Unity构造函数注入配置关闭的泛型类型
我有以下类型:C# 为Unity构造函数注入配置关闭的泛型类型,c#,generics,dependency-injection,unity-container,.net-4.5,C#,Generics,Dependency Injection,Unity Container,.net 4.5,我有以下类型: IQueryProvider接口: public interface IQueryProvider<TEntity, TEntityKey> 公共接口提供程序 以及添加了一个通用参数的实现: public class EFQueryProvider<TContext, TEntity, TEntityKey> : IQueryProvider<TEntity, TEntityKey>. 公共类eQueryProvider:IQueryPr
IQueryProvider
接口:
public interface IQueryProvider<TEntity, TEntityKey>
公共接口提供程序
以及添加了一个通用参数的实现:
public class EFQueryProvider<TContext, TEntity, TEntityKey> : IQueryProvider<TEntity, TEntityKey>.
公共类eQueryProvider:IQueryProvider。
此外,还有一些具体的存储库,包含了通用的QueryProvider。例如:
UserRepository : IUserRepository
{
private IQueryProvider<User, int> _provider;
public UserRepository(IQueryProvider<User, int> provider)
{
_provider = provider;
}
}
UserRepository:IUserRepository
{
私人IQueryProvider\u供应商;
公共用户存储库(IQueryProvider提供程序)
{
_提供者=提供者;
}
}
我正在尝试使用Unity配置解析构造函数参数:
<register type="IUserRepository" mapTo="ConcreteUserRepository">
<constructor>
<param ... What should be here??? />
<constructor>
</register>
如何将封闭泛型类型的实例传递给构造函数(以便将EFQueryProvider
的实例传递给构造函数?我需要在每次存储库注册时执行此操作,因为ArticlesRepository可能需要另一个上下文。
感谢您的帮助。我自己找到了解决方案。 配置应该如下所示:
<register name="myQueryProvider" type="MyLib.IQueryProvider[[User, MyEntityLib], int], MyAnotherLib" mapTo="MyLib.EFQueryProvider[[MyContext, MyEFLib], [User, MyEntityLib], int], MyEFLib" />
和存储库注册:
<register type="IUserRepository" mapTo="UserRepository">
<constructor>
<param name="queryProvider">
<dependency name="myQueryProvider" />
</param>
</constructor>
</register>
请用您正在使用的语言标记此问题。是吗?