Amr*_*rhy 4 c# xml ioc-container unity-container
我在web.config中设置统一配置,我有一个类型,我想传递给它的连接字符串已经存在于同一个web.config文件中.
<connectionStrings>
<add name="DatabaseConnectionString" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|....." providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
在统一部分有:
<type type="IDatabase" mapTo="Database" >
<constructor>
<param name="connectionString" >
<value value="metadata=res://*/Database.csdl|res://*/Database.ssdl|...."/>
</param>
</constructor>
</type>
Run Code Online (Sandbox Code Playgroud)
但是就像我在同一个.config文件中写两次相同的conectionString一样,是否有另一种更好的方法将connectionString的名称传递给类型Database构造函数以避免web.config中的重复?
您可以按照Chris 回答上一个问题的建议编写自己的TypeConverter .
<type type="IDatabase" mapTo="Database" >
<constructor>
<param name="connectionString" >
<value value="DatabaseConnectionString" typeConverter="ConnectionStringTypeConverter"/>
</param>
</constructor>
</type>
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/ff660914(v=PandP.20).aspx#config_value
编辑
这个转换器应该工作:
public class ConnectionStringTypeConverter : TypeConverter
{
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
return ConfigurationManager.ConnectionStrings[value.ToString()];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |