如何使用 WithParameter 方法指定一些参数并让 autofac 解析未指定的参数

How to specify some parameters using WithParameter method and let autofac resolve unspecifed parameters

我有一个 class 在构造函数中接收一个接口和一个字符串参数:

public MyClass(IService service, string config) : IMyClass

在Autofac中注册接口:

builder.RegisterType<Service>()
       .As<IService>()
       .InstancePerRequest();

MyClass也用WithParameter方法注册了字符串参数:

builder.RegisterType<MyClass>()
       .As<IMyClass>()
       .WithParameter("config", parameters["Config"]);

但是如何将IService接口已经解析的对象传递给MyClass构造函数呢?

我原以为上面使用的注册IService就够了,但是当使用WithParameter方法时,我显然需要以相同的方式声明所有参数。

I was expecting that the above used registration of IService is enough

你的假设是正确的。

when the WithParameter method is used, I obviously need to declare all parameters same way.

您不需要将 service 参数与 config 参数一起传递。容器会为您解决。

下面两行就够了 -

builder.RegisterType<Service>().As<IService>().InstancePerRequest();

builder.RegisterType<MyClass>().As<IMyClass>()
   .WithParameter("config", parameters["Config"]).InstancePerRequest();