C#实现实体类与字符串互相转换的方法
- 作者: 爱的旋律88
- 来源: 51数据库
- 2021-10-08
本文实例讲述了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#程序设计有所帮助。
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0