繁体   English   中英

在Funq中使用Open Generics

[英]Using Open Generics with Funq

我有以下界面:

public interface IWriter<in TId, TViewModel>

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

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

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

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>());

其他IOC是否允许这种用途?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM