这不是问题,而是一个问题。我有以下示例代码:
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 ();
当我build.Build ()
时,出现异常:
System.ArgumentException:“类型'TestHandler'无法分配给服务'testHandler(AbstractHandler`1)'。”
什么是正确的注册类型? (使用dotnet core Autofac 4.8.1)
您快到了,只需使用RegisterType
重载和带有某些字符串键的Named
和typeof(AbstractHandler<CommonArgs>))
这是我的github上的link,带有一个小型单元测试,用于发布您的问题。
代码:
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<TestHandler>().Named("myTestHandler", typeof(AbstractHandler<CommonArgs>));
IContainer container = builder.Build();
var testHandler = container.ResolveNamed("myTestHandler", typeof(AbstractHandler<CommonArgs>));