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

时间:2015-04-28 18:31:14

标签: c# autofac

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

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方法时,我显然需要以相同的方式声明所有参数。

1 个答案:

答案 0 :(得分:1)

  

我原以为上面使用的IService注册是   足够

你的假设是正确的。

  

当使用WithParameter方法时,我显然需要声明all   参数相同。

您无需将service参数与config参数一起传递。容器会为你解决它。

以下两行就足够了 -

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

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