gpt4 book ai didi

c# - 将开放泛型与 Funq 结合使用

转载 作者:太空狗 更新时间:2023-10-30 01:32:44 25 4
gpt4 key购买 nike

我有以下界面:

public interface IWriter<in TId, TViewModel>

有许多不同的实现,例如:

public class RedisWriter<TId, TViewModel> : IWriter<TId, TViewModel> 

我希望能够将此类的实例注入(inject)到服务的构造函数中:

public class MyService : Service
{
private readonly IWriter<Guid, OrderViewModel> _writer;

public MyService(IWriter<Guid, OrderViewModel> writer)
{
_writer = writer;
}
}

请注意,泛型类型参数在需要实例的地方关闭。

我在 Funq 中看不到任何方法可以做到这一点。是否可以?或者其他 IOC 是否允许这种使用?

最佳答案

Funq 不支持构建基于开放通用注册的封闭实现。使用 Funq,您将必须显式注册应用程序所需的所有封闭通用实现。例如:

c.Register<IWriter<Guid, OrderViewModel>>(c => new RedisWriter<Guid, OrderViewModel>());
c.Register<IWriter<int, UserViewModel>>(c => new RedisWriter<int, UserViewModel>());

do other IOCs allow this kind of use?

是的,所有流行的 DI 库都支持这一点,例如 Simple Injector、Autofac、CaSTLe Windsor、Ninject 和 StructureMap。

关于c# - 将开放泛型与 Funq 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36336449/

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