您的位置:首页 > 其它

.net读写配置文件

2011-05-21 22:44 246 查看
     在网站或应用程序时,经常会用到配置文件,而这些配置文件一般多是xml文档,在开发配置文件过程中,可以采用下面的思路:
     每个配置文件对应一个实体类,添加配置文件内容时,就new一个配置实体类并给这个类的属性进行赋值,然后【序列化】为xml,接着保存到文件;
     读取时,直接读取前面序列化的xml文档,然后【反序列化】为对应的实体类,通过对实体类的访问以得到配置文件。用到的主要函数:

设置保存配置信息:

/// <summary>
/// 更新配置信息,将配置信息对象序列化至相应的配置文件中,文件格式为带签名的UTF-8
/// </summary>
/// <typeparam name="T">配置信息类</typeparam>
/// <param name="config">配置信息</param>
public static void UpdateConfig<T>(T config)
{
if (config == null)
{
return;
}
Type configClassType = typeof(T);
string configFilePath = GetConfigPath<T>();//根据配置文件名读取配置文件
try
{
XmlSerializer xmlSerializer = new XmlSerializer(configClassType);
using (XmlTextWriter xmlTextWriter = new XmlTextWriter(configFilePath, System.Text.Encoding.UTF8))
{
xmlTextWriter.Formatting = Formatting.Indented;
XmlSerializerNamespaces xmlNamespace = new XmlSerializerNamespaces();
xmlNamespace.Add(string.Empty, string.Empty);
xmlSerializer.Serialize(xmlTextWriter, config, xmlNamespace);
}
}
catch (SecurityException ex)
{
throw new SecurityException(ex.Message, ex.DenySetInstance, ex.PermitOnlySetInstance, ex.Method, ex.Demanded, (IPermission)ex.FirstPermissionThatFailed);
}
}


读取配置信息:

    
/// <summary>
/// 获取配置信息
/// </summary>
/// <typeparam name="T">配置信息类</typeparam>
/// <returns>配置信息</returns>
public static T GetConfig<T>() where T : class, new()
{
Type configClassType = typeof(T);
string configFilePath = GetConfigPath<T>();//根据配置文件名读取配置文件
if (File.Exists(configFilePath))
{
using (XmlTextReader xmlTextReader = new XmlTextReader(configFilePath))
{
XmlSerializer xmlSerializer = new XmlSerializer(configClassType);
configObject = xmlSerializer.Deserialize(xmlTextReader);
}
}
T config = configObject as T;
if (config == null)
{
return new T();
}
else
{
return config;
}
}


/// <summary>
/// 获取配置文件的服务器物理文件路径
/// </summary>
/// <typeparam name="T">配置信息类</typeparam>
/// <returns>配置文件路径</returns>
public static string GetConfigPath<T>()
{
string path = ("E://Config//");
return path + typeof(T).Name + ".config";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: