簡體   English   中英

如何使用 Autofac 注冊裝飾器:“檢測到循環組件依賴項”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM