【发布时间】:2021-01-01 15:34:41
【问题描述】:
System.InvalidOperationException:当前类型 Microsoft.Extensions.Configuration.IConfiguration 是一个接口,无法构造。您是否缺少类型映射?
我在 .NET Core 中使用 unity,上面的错误出现在这一行:
container.RegisterInstance<IServiceA>(IoC.Resolve<IServiceB>());
IServiceB 是这样注册的:
container.RegisterType<IServiceB, ServiceA>(new ContainerControlledLifetimeManager());
我有一个实现 IService B 的类 ServiceA,如下所示。
public class ServiceA : IServiceB
{
private IConfiguration _configuration;
public ServiceA(IConfiguration configuration): base(configReader)
{
_configuration = configuration;
}
public string someVariable => _configuration.GetSection("Section").GetSection("WantedKey").Value;
...
}
我正在使用 Microsoft.Extensions.Configuration.IConfiguration 进行配置。
所以我不知道如何映射它,因为我是从 Microsoft.Extensions.Configuration.IConfiguration 获取的。
我做错了什么?我该如何解决?
【问题讨论】:
-
您是否在容器中注册了
IConfiguration的实现? -
构建配置,然后将其注册到容器中。
-
与其尝试注入整个配置服务,不如构造并注入特定的配置对象
标签: c# dependency-injection .net-core unity-container