在参数中使用默认值注册类型
本文关键字:默认值 注册 类型 参数 | 更新日期: 2023-09-27 18:29:16
我在构造函数中有默认值的类型:
公共接收器(ISerializer序列化程序、字符串密钥、IInterceptorinterceptor=默认(IInterceptor))
我尝试注册这种类型:
containerBuilder
.RegisterType<Receiver>()
.Named<IReceiver>("receiver")
.UsingConstructor(new[] { typeof(ISerializer), typeof(string)})
.WithParameters(new List<Parameter>
{
ResolvedParameter.ForNamed<ISerializer>("stringSerializer"),
new NamedParameter("key", "noneKey")
});
我得到以下例外:
类型上不存在匹配的构造函数"通道.接收器".
你能帮助我如何在构造函数中注册具有默认值的类型吗??
默认参数由C#编译器在构造Receiver
的调用站点插入。
但是,autofac
在解析构造函数时不使用此方法。
因此,您必须将其明确添加为参数:
builder
.RegisterType<Receiver>()
.Named<IReceiver>("receiver")
.UsingConstructor(new[] { typeof(ISerializer), typeof(string), typeof(IInterceptor) })
.WithParameters(new List<Parameter>
{
ResolvedParameter.ForNamed<ISerializer>("stringSerializer"),
new NamedParameter("key", "noneKey"),
new NamedParameter("interceptor", null)
});