![](/img/trans.png)
[英]DependencyResolutionException Circular component dependency detected: How to use Autofac to inject decorator?
[英]How to register a decorator with Autofac: "Circular component dependency detected"
我有一個循環依賴來擴展添加緩存抽象的對象的功能。
public class CachedDecorator : IParameter
{
public CachedDecorator (IParameter decorated);
...
}
public class MyImplementationParameter : IParameter
{
...
}
使用 .Net core Dependency injection container 我可以做這樣的事情來創建這些依賴項並且它可以工作:
services.AddSingleton<IParameter>(provider => new CachedDecorator
(provider.GetRequiredService<MyImplementationParameter >()));
如何使用 Autofac 復制該聲明?
我正在嘗試這樣的事情:
builder.RegisterType<CachedDecorator>()
.As<IParameter>()
.WithParameter(
new ResolvedParameter(
(pi, ctx) => pi.ParameterType == typeof(MyImplementationParameter ),
(pi, ctx) => ctx.Resolve<MyImplementationParameter>()));
但我收到“檢測到循環組件依賴項:”
從 Autofac 4.9 開始,您可以按如下方式注冊您的裝飾器:
builder.RegisterType<MyImplementationParameter>().As<IParameter>();
builder.RegisterDecorator<CachedDecorator, IParameter>();
有關更多信息,請參閱文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.