C# 在netcore中使用autofac时出现registerType异常

C# 在netcore中使用autofac时出现registerType异常,c#,.net-core,autofac,C#,.net Core,Autofac,这不是一个问题,而是一个问题。我有以下示例代码: class CommonArgs{ } class TestArgs : CommonArgs{ } abstract class AbstractHandler where T: CommonArgs, new (){ } class TestHandler: AbstractHandler{ } 我使用autofac注册类型: builder.RegisterType (typeof (TestHandler)). Named ("t

这不是一个问题,而是一个问题。我有以下示例代码:

class CommonArgs{
}

class TestArgs : CommonArgs{
}

abstract class AbstractHandler where T: CommonArgs, new (){
}

class TestHandler: AbstractHandler{
}
我使用autofac注册类型:

builder.RegisterType (typeof (TestHandler)). Named ("testHandler", typeof (AbstractHandler<>)). InstancePerLifetimeScope ();
builder.RegisterType(typeof(TestHandler))。命名为(“testHandler”,typeof(AbstractHandler))。InstancePerLifetimeScope();
当我
build.build()
时,我得到一个异常:

System.ArgumentException:“类型'TestHandler'不可分配给服务'TestHandler(AbstractHandler`1')。”


正确的注册类型是什么?(使用dotnet core Autofac 4.8.1)

您就快到了,只需使用
注册表类型
重载和名为的
以及一些字符串键和
类型(AbstractHandler))

下面是我的github的一个小单元测试,用来回答您的问题

代码:

ContainerBuilder=newcontainerbuilder();
名为(“myTestHandler”,typeof(AbstractHandler));
IContainer容器=builder.Build();
var testHandler=container.ResolveNamed(“myTestHandler”,typeof(AbstractHandler));

欢迎来到堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后,你的问题包括你的源代码作为一个,它可以被其他人编译和测试。当类没有泛型时,为什么要使用
AbstractHandler
?我的TestHandler是这样的:class TestHandler:AbstractHandler{}我想用named注册Type,因为我只知道解析对象的场景中的名称Hey@stonezhu我已经更新了答案,(还有链接中的代码)
ContainerBuilder builder = new ContainerBuilder();            
builder.RegisterType<TestHandler>().Named("myTestHandler", typeof(AbstractHandler<CommonArgs>));

IContainer container = builder.Build();

var testHandler = container.ResolveNamed("myTestHandler", typeof(AbstractHandler<CommonArgs>));