C# 在.net core中注册未绑定泛型时无法获取服务

C# 在.net core中注册未绑定泛型时无法获取服务,c#,asp.net-web-api,dependency-injection,.net-core,C#,Asp.net Web Api,Dependency Injection,.net Core,向类注册未绑定泛型时,我无法将服务注入到我的对象中: services.AddTransient(typeof(IGetItems<,>), typeof(GetItems)); //Exampe class public class GetItems : IGetItems<GetResultsParms, GetResults> {} 我如何解决这个问题 不能将开放的泛型接口与封闭的泛型实现相结合 以下是一个原因示例: services.AddTransient(

向类注册未绑定泛型时,我无法将服务注入到我的对象中:

services.AddTransient(typeof(IGetItems<,>), typeof(GetItems));
//Exampe class 
public class GetItems : IGetItems<GetResultsParms, GetResults> {}

我如何解决这个问题

不能将开放的泛型接口与封闭的泛型实现相结合

以下是一个原因示例:

services.AddTransient(typeof(IGetItems<,>), typeof(GetItems));

class GetItems : IGetItems<GetResultsParms, GetResults> {}

class Consumer {

    public Consumer( IGetItems<String,Int32> getter )
    {
        // ...
    }
}
…使用通用重载可以更简洁地完成以下操作:

services.AddTransient< IGetItems< CustomersParams, CustomersResults>, CustomersGetter >();
services.AddTransient< IGetItems< OrdersParams, OrdersResults>, OrdersGetter>();
services.AddTransient< IGetItems< ProductsParams, ProductsResults>, ProductsGetter>();
services.AddTransient,CustomersGetter>();
services.AddTransient,OrdersGetter>();
服务。AddTransient,ProductsGetter>();

您从哪里得到的错误?它是异常还是编译器(或代码分析)消息?如果它是一个异常,它的堆栈跟踪是什么?您是否使用Microsoft.Extensions.DependencyInjection的自定义后端?这是一个例外。我使用的是集成的:asp net核心DI。我可以用它们的接口注册常规类。无关提示:不要用动词命名类、接口和结构(只有方法和委托应该用动词命名)。这是一个很好的提示,只是一个简单的例子。如果我执行以下操作,一切都会正常工作:services.AddTransient(typeof(IGetItems)、typeof(GetItems));有没有一个例子可以让我了解如何创建自定义工厂?@ShakHam网上有很多教程介绍如何使用依赖注入工厂。
services.AddTransient(typeof(IGetItems<CustomersParams,CustomersResults>), typeof(CustomersGetter));
services.AddTransient(typeof(IGetItems<OrdersParams,OrdersResults>), typeof(OrdersGetter));
services.AddTransient(typeof(IGetItems<ProductsParams,ProductsResults>), typeof(ProductsGetter));
services.AddTransient< IGetItems< CustomersParams, CustomersResults>, CustomersGetter >();
services.AddTransient< IGetItems< OrdersParams, OrdersResults>, OrdersGetter>();
services.AddTransient< IGetItems< ProductsParams, ProductsResults>, ProductsGetter>();