/// <summary>
/// 用于通用的加载或保存 Xml 序列化配置文件的类,该类通常适用于使用结构来保存配置数据的程序,例如数据源配置。
/// </summary>
/// <typeparam name="T">类型必须为可序列化的类,并且要实现 CollectBase 类,以及一个通用的索引器。</typeparam>
/// <example>
/// 把一个 DataTable 对象序列化到文件中。
/// DataTable table = ..
/// XmlConfigProvider<DataTable> cp = new XmlConfigProvider<DataTable>("test.txt");
/// cp.SetConfig(dt);
/// </example>
public class XmlConfigProvider<T>
{
private string filename = string.Empty;
public XmlConfigProvider(string filename)
{
//如果目录不存在则创建这个目录。
string fullPath = Path.GetFullPath(filename);
FileInfo fileInfo = new FileInfo(fullPath);
DirectoryInfo directoryInfo = new DirectoryInfo(fileInfo.DirectoryName);
if (!directoryInfo.Exists) directoryInfo.Create();
this.filename = fullPath;
}
/// <summary>
/// 从文件中获取结构集合。
/// </summary>
/// <returns>返回在创建该类时使用的泛型结构或类。</returns>
public T GetConfig()
{
//如果文件不存在,则返回一个空的集合。
T t;
if (!File.Exists(filename))
{
SetConfig(default(T));
return GetConfig();
}
XmlSerializer ser = new XmlSerializer(typeof(T));
TextReader reader = new StreamReader(filename);
t = (T)ser.Deserialize(reader);
reader.Close();
SetConfig(t);
return t;
}
/// <summary>
/// 向文件中写入结构集合。
/// </summary>
/// <param name="t">要写入文件中的泛型结构或类</param>
public void SetConfig(T t)
{
XmlSerializer serializerObj = new XmlSerializer(typeof(T));
TextWriter writer = new StreamWriter(filename);
serializerObj.Serialize(writer, t);
writer.Close();
}
/// <summary>
/// 文件名。
/// </summary>
public string FileName
{
get { return filename; }
set { filename = value; }
}
}
/// 用于通用的加载或保存 Xml 序列化配置文件的类,该类通常适用于使用结构来保存配置数据的程序,例如数据源配置。
/// </summary>
/// <typeparam name="T">类型必须为可序列化的类,并且要实现 CollectBase 类,以及一个通用的索引器。</typeparam>
/// <example>
/// 把一个 DataTable 对象序列化到文件中。
/// DataTable table = ..
/// XmlConfigProvider<DataTable> cp = new XmlConfigProvider<DataTable>("test.txt");
/// cp.SetConfig(dt);
/// </example>
public class XmlConfigProvider<T>
{
private string filename = string.Empty;
public XmlConfigProvider(string filename)
{
//如果目录不存在则创建这个目录。
string fullPath = Path.GetFullPath(filename);
FileInfo fileInfo = new FileInfo(fullPath);
DirectoryInfo directoryInfo = new DirectoryInfo(fileInfo.DirectoryName);
if (!directoryInfo.Exists) directoryInfo.Create();
this.filename = fullPath;
}
/// <summary>
/// 从文件中获取结构集合。
/// </summary>
/// <returns>返回在创建该类时使用的泛型结构或类。</returns>
public T GetConfig()
{
//如果文件不存在,则返回一个空的集合。
T t;
if (!File.Exists(filename))
{
SetConfig(default(T));
return GetConfig();
}
XmlSerializer ser = new XmlSerializer(typeof(T));
TextReader reader = new StreamReader(filename);
t = (T)ser.Deserialize(reader);
reader.Close();
SetConfig(t);
return t;
}
/// <summary>
/// 向文件中写入结构集合。
/// </summary>
/// <param name="t">要写入文件中的泛型结构或类</param>
public void SetConfig(T t)
{
XmlSerializer serializerObj = new XmlSerializer(typeof(T));
TextWriter writer = new StreamWriter(filename);
serializerObj.Serialize(writer, t);
writer.Close();
}
/// <summary>
/// 文件名。
/// </summary>
public string FileName
{
get { return filename; }
set { filename = value; }
}
}