簡體   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