C# 在Unity配置中,如何将connectionString传递给构造函数?
我正在web.config中设置unity配置,我有一个类型,我想将同一web.config文件中已经存在的连接字符串传递给它C# 在Unity配置中,如何将connectionString传递给构造函数?,c#,xml,unity-container,ioc-container,C#,Xml,Unity Container,Ioc Container,我正在web.config中设置unity配置,我有一个类型,我想将同一web.config文件中已经存在的连接字符串传递给它 <connectionStrings> <add name="DatabaseConnectionString" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|....." providerName="System.Data.EntityClient
<connectionStrings>
<add name="DatabaseConnectionString" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|....." providerName="System.Data.EntityClient" />
</connectionStrings>
在统一部分有:
<type type="IDatabase" mapTo="Database" >
<constructor>
<param name="connectionString" >
<value value="metadata=res://*/Database.csdl|res://*/Database.ssdl|...."/>
</param>
</constructor>
</type>
但是,就像我在同一个.config文件中两次编写同一个连接字符串一样,是否有其他更好的方法将连接字符串的名称传递给类型数据库构造函数,以避免在web.config中重复?没有内置的方法来执行此操作。您可以编写一个模式扩展来完成这些工作,但目前还没有一个文档化的过程。我会看看是否能在以后想出一个例子。你可以按照克里斯的建议编写自己的类型转换器
如何编写此typeConverter,我在那里尝试了一个示例,但没有成功。我尝试了它,它给了我以下错误:“无法解析类型名或别名ConnectionStringTypeConverter。请检查您的配置文件并验证此类型名。”您必须将ConnectionStringTypeConverter添加为别名或提供其完整的限定名:MyNameSpace.ConnectionStringTypeConverter,MyAssembly
<type type="IDatabase" mapTo="Database" >
<constructor>
<param name="connectionString" >
<value value="DatabaseConnectionString" typeConverter="ConnectionStringTypeConverter"/>
</param>
</constructor>
</type>
public class ConnectionStringTypeConverter : TypeConverter
{
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
return ConfigurationManager.ConnectionStrings[value.ToString()];
}
}