C# Hashtable与object实体对象互转
C# Hashtable与object实体对象互转C# Code:
/// <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;
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// <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;
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
C# Code:
/// <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/S框架网(www.csframework.com) QQ:23404761
/// <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/S框架网(www.csframework.com) QQ:23404761
参考文档:
C# 使用SortedList对Hashtable排序
代码生成器 CodeGenerator V6.1 | 提供两种生成报表策略(表格/标签,TableObject/TextObject)|C/S开发框架
SqlBulkCopy.WriteToServer报错:“Unable to cast object of type 'System.Guid' to type 'System.String'.”
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
C#中 object类型,c# object-C/S开发框架
CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
WCF开发框架之ICommunicationObject 对象详解
SQL 查询当前数据库的用户表或视图 sysobjects.xtype in (U,V)
SQL命令生成器:GenerateSqlCmdByTableFields,GenerateSqlCmdByObjectClass
Entity Framework(EF):测试DbContext.Remove方法,对象状态管理器(Object State Manager)
C# WebApi将查询字符串RequestUri.Query解析转换为Hashtable
动态对象ExpandoObject实现动态函数调用
文件中的类都不能进行设计,无法设计基类System.Object
TypeConverter与ExpandableObjectConverter
Object Collection Editor窗体的Add/Delete按钮不可用
DataTable与Object互相转换及相关函数转换大全(DataConvert类)
C# 使用SortedList对Hashtable排序
代码生成器 CodeGenerator V6.1 | 提供两种生成报表策略(表格/标签,TableObject/TextObject)|C/S开发框架
SqlBulkCopy.WriteToServer报错:“Unable to cast object of type 'System.Guid' to type 'System.String'.”
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
C#中 object类型,c# object-C/S开发框架
CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
WCF开发框架之ICommunicationObject 对象详解
SQL 查询当前数据库的用户表或视图 sysobjects.xtype in (U,V)
SQL命令生成器:GenerateSqlCmdByTableFields,GenerateSqlCmdByObjectClass
Entity Framework(EF):测试DbContext.Remove方法,对象状态管理器(Object State Manager)
C# WebApi将查询字符串RequestUri.Query解析转换为Hashtable
动态对象ExpandoObject实现动态函数调用
文件中的类都不能进行设计,无法设计基类System.Object
TypeConverter与ExpandableObjectConverter
Object Collection Editor窗体的Add/Delete按钮不可用
DataTable与Object互相转换及相关函数转换大全(DataConvert类)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
