我正在使用一些Autofac模块来初始化配置文件。例如:
public class Config()
{
public String ConnectionString { get; set; }
}关于XML配置,一切看起来都是这样的:
<Autofac defaultAssembly="Autofac">
<components>
<component type="Autofac.Configuration.Config, Autofac" instance-scope="single-instance" >
<properties>
<property name="ConnectionString" value="Cnstring" />
</properties>
</component>
</components>
</Autofac>我使用这个配置来进行配置,但是为了使其不可变,我使用了一个私有的setter {get; private set;}。这在Autofac中行不通,请您建议如何使用私有setter初始化吗?
发布于 2013-12-27 07:33:57
除了Peter的回答之外,如果您想继续使用属性和属性注入,您可以通过代码手动添加“不变性”,如下所示:
public class Config
{
private string _connectionString;
public String ConnectionString
{
get
{
return _connectionString;
}
set
{
if (_connectionString != null) throw new ReadOnlyException("_connectionString");
if (value == null) throw new ArgumentNullException("value");
_connectionString = value;
}
}
}发布于 2013-12-26 12:01:33
只要属性是只读的,Autofac就无法通过属性注入来初始化它。在这种情况下,您应该使用构造函数注入。
https://stackoverflow.com/questions/20783985
复制相似问题