C# 如果B是一个具体的类,有人知道是否支持Autofac隐式关系类型A需要所有类型的B吗?
如果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
\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");