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