C#类库DLL配置⽂件
C#类库DLL配置⽂件
在.NET⾥⾯,类库项⽬是没有相应的配置⽂件的,但有时候写⼀些公共的类库DLL,⼜希望有配置⽂件来进⾏配置,以适应需求变化。还是⽼话,微软既然不提供,咱⾃⼰来写个吧。在类库项⽬中创建ConfigurationManager类.使⽤.NET framework 4.0,在
web,windows,window service 中均进⾏过测试。使⽤时需将配置⽂件命名为 dll名字.config 并放置在引⽤类库DLL项⽬的debug或者release ⽂件夹下。
SetConnectionStrings(string keyNameValue, string value) { SetNameAndValue("connectionStrings",
应value值的设置 /// </summary> /// <param name="sectionTag">对应节点</param> /// <param
name="KeyOrName">对应key或者name</param> /// <param name="keyNameValue">key或者name的值
</param> /// <param name="valueOrConnectionString">对应key或者name 的value值</param> private
static void SetNameAndValue(string sectionTag, string KeyOrName, string keyNameValue, string
valueOrConnectionString) { string assemblyPath =
Assembly.GetExecutingAssembly().GetName().CodeBase; //获取运⾏项⽬当然DLL的路径 assemblyPath
= assemblyPath.Remove(0, 8);//去除路径前缀 string configUrl = assemblyPath + ".config"; //添加.config后
缀,得到配置⽂件路径 try { XmlDocument cfgDoc = new XmlDocument();
cfgDoc.Load(configUrl); XmlNodeList nodes = cfgDoc.GetElementsByTagName(sectionTag);
foreach (XmlNode node in nodes) { foreach (XmlNode childNode in node.ChildNodes)
param name{ XmlAttributeCollection attributes = childNode.Attributes; if
(attributes.GetNamedItem(KeyOrName).InnerText == keyNameValue) {
attributes.GetNamedItem("value").InnerText = valueOrConnectionString; } } }
cfgDoc.Save(configUrl); } catch (FileNotFoundException es) { throw es; } }
/// <summary> /// 根据节点名,⼦节点名,获取指定值 /// </summary> /// <param
name="sectionTag">对应节点</param> /// <param name="KeyOrName">key或者name</param> ///
<param name="valueOrConnectionString">key或者name的值</param> /// <returns>key或者name对应
value值</returns> private static Hashtable GetNameAndValue(string sectionTag, string KeyOrName,
string valueOrConnectionString) { Hashtable settings = new Hashtable(5);//初始化Hashtable
string assemblyPath = Assembly.GetExecutingAssembly().GetName().CodeBase;//获取运⾏项⽬当然DLL的路
径 assemblyPath = assemblyPath.Remove(0, 8); //去除前缀 string configUrl = assemblyPath +
".config"; //添加 .config 后缀,得到配置⽂件路径 XmlDocument cfgDoc = new XmlDocument();
FileStream fs = null; try { fs = new FileStream(configUrl, FileMode.Open,
FileAccess.Read); cfgDoc.Load(new XmlTextReader(fs)); XmlNodeList nodes =
cfgDoc.GetElementsByTagName(sectionTag); foreach (XmlNode node in nodes) {
foreach (XmlNode childNode in node.ChildNodes) { XmlAttributeCollection attributes =
childNode.Attributes; settings.Add(attributes[KeyOrName].Value,
attributes[valueOrConnectionString].Value); } } } catch (FileNotFoundException
es) { throw es; } finally { if (fs != null) { fs.Close();
} } return settings; } }}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论