我想传递一个string列表作为构造函数参数。我使用web.config
来指定接口和服务绑定。所以我想配置web.config
以在启动类时传递字符串参数列表。我使用autofac作为IOC。有人可以帮我吗?
答案 0 :(得分:1)
以下是带有autofac配置的示例web.config。 Autofac.Example.Calculator.Division.Divide
的注册有一个如何为构造函数指定参数的示例。
<configuration>
<configSections>
<section name="autofac" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
</configSections>
<autofac defaultAssembly="Autofac.Example.Calculator.Api">
<components>
<component
type="Autofac.Example.Calculator.Addition.Add, Autofac.Example.Calculator.Addition"
service="Autofac.Example.Calculator.Api.IOperation" />
<component
type="Autofac.Example.Calculator.Division.Divide, Autofac.Example.Calculator.Division"
service="Autofac.Example.Calculator.Api.IOperation"
inject-properties="yes">
<parameters>
<parameter name="places" value="4" />
</parameters>
<properties>
<property name="EnableExceptions" value="true" />
</properties>
</component>
</components>
<modules>
<module type="CalculationModule" />
</modules>
<files>
<file name="Controllers.config" section="controllers" />
<file name="Services.config" />
</files>
</autofac>
</configuration>
有关使用AutoFac进行基于XML的配置的更多信息,请参阅documentation here。
答案 1 :(得分:0)
您可以在Autofac的XML配置模块中配置列表,以这种方式将它们作为构造函数参数传递:
<component type="MyNameSpace.MyClass, MyAssemblyName">
<parameters>
<parameter name="myListParameter">
<list>
<item value="MyFirstItem"/>
<item value="MySecondItem"/>
</list>
</parameter>
</parameters>
</component>
这适用于组件和模块,并且(几乎)与在代码中执行此操作相同:
var list = new List<string> { "MyFirstItem", "MySecondItem" };
var a = new MyNameSpace.MyClass(list);
// or explicitely with named parameter
var b = new MyNameSpace.MyClass(myListParameter: list);
请注意,参数的名称需要与MyClass的类构造函数匹配:
public class MyClass
{
public MyClass(IList<string> myListParameter)
{