专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

在C#中Hashtable与object实体对象互转的方法

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:12:09       共计:3651 浏览
/// <summary>
/// C# Hashtable转object实体对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <returns></returns>
public static T Hashtable2Object<T>(Hashtable source)
{
   T obj = Activator.CreateInstance<T>();
   object tv;
   
   PropertyInfo[] ps = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
   foreach (PropertyInfo p in ps)
   {
      if (source.ContainsKey(p.Name))
      {
         tv = source[p.Name];
         
         if (p.PropertyType.IsArray)//数组类型,单独处理
         {
            p.SetValue(obj, tv, null);
         }
         else
         {
            if (String.IsNullOrEmpty(tv.ToString()))//空值
            tv = p.PropertyType.IsValueType ? Activator.CreateInstance(p.PropertyType) : null;//值类型
            else
            tv = System.ComponentModel.TypeDescriptor.GetConverter(p.PropertyType).ConvertFromString(tv.ToString());//创建对象
            
            p.SetValue(obj, tv, null);
         }
         
      }
   }
   
   return obj;

}


/// <summary>
/// C# 实体对象Object转HashTable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public Hashtable Object2Hashtable(object obj)
{
   Hashtable hash = new Hashtable();
   
   PropertyInfo[] ps = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
   foreach (PropertyInfo p in ps)
   {
      hash.Add(p.Name, p.GetValue(obj));
   }
   
   return hash;
}

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C#序列化与反序列化实现XML与实体类之间相互转换的方法 | ·下一条:在C#中将object对象转换成实体对象的方法

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有