C# 参数中具有默认值的寄存器类型

C# 参数中具有默认值的寄存器类型,c#,ioc-container,autofac,C#,Ioc Container,Autofac,我在构造函数中具有默认值的类型: 公共接收器(ISerializer序列化程序、字符串键、IInterceptor 拦截器=默认值(IInterceptor)) 我尝试注册此类型: containerBuilder .RegisterType<Receiver>() .Named<IReceiver>("receiver") .UsingConstructor(new[] { typeo

我在构造函数中具有默认值的类型:

公共接收器(ISerializer序列化程序、字符串键、IInterceptor 拦截器=默认值(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")
             });
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)
});