如何使用 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();
我有一个 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();