使用Ninject实例化通用服务

时间:2015-12-18 19:43:38

标签: c# dependency-injection ninject

我有这样一个服务的通用接口:

public interface IProductService<T> where T:Product
{
    Task<T> LoadProduct(int productID, int cateogryId, string key);
}

默认实现是

public class ProductService<T>: IProductService<T> where T:Product
{ ... }

我想使用Ninject(可能还有Ninject.Extensions.Factory)在运行时实例化服务,如下所示:

ProductService<Toy> productService = productServiceFactory.CreateProductService("Toy");

其中nameOfProductClass将是从Product基类派生的实际产品类(换句话说,T)。我无法弄清楚如何做到这一点。我可以轻松地创建这样的服务:

var productService = productServiceFactory.CreateProductService<Toy>();

玩具来自产品。如果您注意到,这需要我在调用之前将产品类型实际放入代码中。我不希望这样,我想将类型名称作为参数传递。

0 个答案:

没有答案