///
<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; }
}
}