C# 参数中具有默认值的寄存器类型
我在构造函数中具有默认值的类型: 公共接收器(ISerializer序列化程序、字符串键、IInterceptor 拦截器=默认值(IInterceptor)) 我尝试注册此类型:C# 参数中具有默认值的寄存器类型,c#,ioc-container,autofac,C#,Ioc Container,Autofac,我在构造函数中具有默认值的类型: 公共接收器(ISerializer序列化程序、字符串键、IInterceptor 拦截器=默认值(IInterceptor)) 我尝试注册此类型: containerBuilder .RegisterType<Receiver>() .Named<IReceiver>("receiver") .UsingConstructor(new[] { typeo
containerBuilder
.RegisterType<Receiver>()
.Named<IReceiver>("receiver")
.UsingConstructor(new[] { typeof(ISerializer), typeof(string)})
.WithParameters(new List<Parameter>
{
ResolvedParameter.ForNamed<ISerializer>("stringSerializer"),
new NamedParameter("key", "noneKey")
});
containerBuilder
.RegisterType()
.已命名(“接收人”)
.UsingConstructor(新[]{typeof(ISerializer),typeof(string)})
.WithParameters(新列表
{
ResolvedParameter.ForName(“stringSerializer”),
新名称参数(“键”、“非键”)
});
我得到以下例外情况:
类型上不存在匹配的构造函数
“频道。接收器”
你能帮我在构造函数中用默认值注册一个类型吗?默认参数是由C#编译器在正在构造
接收器的调用站点插入的
但是,在解析构造函数时,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)
});
builder
.RegisterType()
.已命名(“接收人”)
.UsingConstructor(新[]{typeof(ISerializer)、typeof(string)、typeof(IInterceptor)})
.WithParameters(新列表
{
ResolvedParameter.ForName(“stringSerializer”),
新名称参数(“键”、“非键”),
新名称参数(“拦截器”,null)
});