C#实现实体类与字符串互相转换的方法
程序员文章站
2023-01-10 16:50:26
本文实例讲述了c#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下:
using system;
using system.collec...
本文实例讲述了c#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下:
using system; using system.collections.generic; using system.text; namespace packdll.data.convertdata { /// <summary> /// 实体类、字符串互相转换 /// </summary> public class packreflectionentity<t> { /// <summary> /// 将实体类通过反射组装成字符串 /// </summary> /// <param name="t">实体类</param> /// <returns>组装的字符串</returns> public static string getentitytostring(t t) { system.text.stringbuilder sb = new stringbuilder(); type type = t.gettype(); system.reflection.propertyinfo[] propertyinfos = type.getproperties(); for (int i = 0; i < propertyinfos.length; i++) { sb.append(propertyinfos[i].name + ":" + propertyinfos[i].getvalue(t, null) + ","); } return sb.tostring().trimend(new char[] { ',' }); } /// <summary> /// 将反射得到字符串转换为对象 /// </summary> /// <param name="str">反射得到的字符串</param> /// <returns>实体类</returns> public static t getentitystringtoentity(string str) { string[] array = str.split(','); string[] temp = null; dictionary<string, string> dictionary = new dictionary<string, string>(); foreach (string s in array) { temp = s.split(':'); dictionary.add(temp[0], temp[1]); } system.reflection.assembly assembly = system.reflection.assembly.getassembly(typeof(t)); t entry = (t)assembly.createinstance(typeof(t).fullname); system.text.stringbuilder sb = new stringbuilder(); type type = entry.gettype(); system.reflection.propertyinfo[] propertyinfos = type.getproperties(); for (int i = 0; i < propertyinfos.length; i++) { foreach (string key in dictionary.keys) { if (propertyinfos[i].name == key.tostring()) { propertyinfos[i].setvalue(entry, getobject(propertyinfos[i], dictionary[key]), null); break; } } } return entry; } /// <summary> /// 转换值的类型 /// </summary> /// <param name="p"></param> /// <param name="value"></param> /// <returns></returns> static object getobject(system.reflection.propertyinfo p, string value) { switch (p.propertytype.name.tostring().tolower()) { case "int16": return convert.toint16(value); case "int32": return convert.toint32(value); case "int64": return convert.toint64(value); case "string": return convert.tostring(value); case "datetime": return convert.todatetime(value); case "boolean": return convert.toboolean(value); case "char": return convert.tochar(value); case "double": return convert.todouble(value); default: return value; } } } }
希望本文所述对大家的c#程序设计有所帮助。
下一篇: winform 实现控制输入法