[netcore中使用autofac的registerType异常

问题描述 投票:1回答:1

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

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)

c# autofac
1个回答
1
投票

您快到了,只需使用RegisterType重载和带有某些字符串键的Namedtypeof(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>));
© www.soinside.com 2019 - 2024. All rights reserved.