gpt4 book ai didi

c# - 为 Unity 构造函数注入(inject)配置封闭泛型类型

转载 作者:行者123 更新时间:2023-11-30 22:23:56 33 4
gpt4 key购买 nike

我有以下一组类型: IQueryProvider接口(interface):

public interface IQueryProvider<TEntity, TEntityKey>

以及添加了一个通用参数的实现:

public class EFQueryProvider<TContext, TEntity, TEntityKey> : IQueryProvider<TEntity, TEntityKey>.

此外,还有具体的存储库,其中封装了通用的 QueryProvider。例如:

UserRepository : IUserRepository
{
private IQueryProvider<User, int> _provider;

public UserRepository(IQueryProvider<User, int> provider)
{
_provider = provider;
}
}

我正在尝试使用 Unity 配置解析构造函数参数:

<register type="IUserRepository" mapTo="ConcreteUserRepository">
<constructor>
<param ... What should be here??? />
<constructor>
</register>

我如何将封闭泛型类型的实例传递给构造函数(以便将 EFQueryProvider<MySampleContext, User, int> 的实例传递给构造函数?我需要在每个存储库注册时执行此操作,例如 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>

关于c# - 为 Unity 构造函数注入(inject)配置封闭泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075741/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com