Dependency injection 构造函数中的Autofac inject type参数导致;无法将lambda expressiont转换为类型参数,因为它不是委托类型";

Dependency injection 构造函数中的Autofac inject type参数导致;无法将lambda expressiont转换为类型参数,因为它不是委托类型";,dependency-injection,parameters,autofac,autofac-configuration,Dependency Injection,Parameters,Autofac,Autofac Configuration,带参数的singleton服务的Autofac注册让我感到困扰。我的尝试是: builder.RegisterType<CsvReader>().As<ICsvReader>(); builder.RegisterType<MyService>().As<IMyService>() // .WithParameter(ctx => ctx.Resolve<ICsvFileReader>()) // error h

带参数的singleton服务的Autofac注册让我感到困扰。我的尝试是:

    builder.RegisterType<CsvReader>().As<ICsvReader>();
    builder.RegisterType<MyService>().As<IMyService>()
 // .WithParameter(ctx => ctx.Resolve<ICsvFileReader>()) // error here
    .AsSelf().SingleInstance();
builder.RegisterType().As();
builder.RegisterType().As()
//.WithParameter(ctx=>ctx.Resolve())//此处出错
.AsSelf().SingleInstance();
我不确定应该如何在MyService注册中注入ICsvFileReader参数。MyService是一个单例服务。在我把这个参数注入ctor之前,每个人都工作得很好

错误是:

无法将lambda expressiont转换为类型参数,因为它不是 委托类型


帮助?

如果
ICsvFileReader
已经在Autofac注册(
As
),那么您根本不需要使用参数指定
。Autofac应该将其传递给构造函数。