C# 如果B是一个具体的类,有人知道是否支持Autofac隐式关系类型A需要所有类型的B吗?

C# 如果B是一个具体的类,有人知道是否支持Autofac隐式关系类型A需要所有类型的B吗?,c#,autofac,C#,Autofac,如果B是一个具体的类,有人知道是否支持Autofac隐式关系类型A需要所有类型的B吗 例如,在以下代码中的构造函数中,\u circuitBreakerPolicies未填充我在容器中注册的任何circuitBreakerPolicies实例。相反,\u CircuitBreakerPolicys为空CircuitBreakerPolicy是一个具体的类 private readonly IEnumerable<CircuitBreakerPolicy> _circuitBreake

如果B是一个具体的类,有人知道是否支持Autofac隐式关系类型A需要所有类型的B吗

例如,在以下代码中的构造函数中,
\u circuitBreakerPolicies
未填充我在容器中注册的任何
circuitBreakerPolicies
实例。相反,
\u CircuitBreakerPolicys
为空
CircuitBreakerPolicy
是一个具体的类

private readonly IEnumerable<CircuitBreakerPolicy> _circuitBreakerPolicies;

public HealthController(
    IEnumerable<CircuitBreakerPolicy> circuitBreakerPolicies)
{
    _circuitBreakerPolicies = circuitBreakerPolicies;
}

我已经阅读了Autofac关于隐式关系类型()的文档,但找不到任何关于我的问题的见解。

是的,确实如此。从容器的角度来看,解析抽象类还是具体类并不重要。但是您犯了一个错误,将依赖项注册为
Keyed


如果是故意的,并且如果需要将依赖项注册为
键控
命名
,则应告知构建器开关键(或名称)他们应使用以解决依赖项。您甚至可以使用同一密钥注册多个对象,但必须使用该密钥来解析。容器将为您解析并注入具有相同密钥(或名称)的所有对象。

请说明您是如何注册CircuitBreakerPolicy实例化的。我正在编辑我的文章,以包括如何注册CircuitBreakerPolicy的示例。谢谢。我建议查看元数据而不是密钥:
builder.Register(
    ctx => Policy.Handle<Exception>().CircuitBreaker
        (
            exceptionsAllowedBeforeBreaking: 3,
            durationOfBreak: TimeSpan.FromMinutes(1))
        ).Keyed<CircuitBreakerPolicy>("testPolicy");