把对象序列化到文件中和从文件中反序列化的管理类

 

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

 

转载于:https://www.cnblogs.com/xiefang2008/archive/2009/04/19/1439194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值