用户登录
用户注册

分享至

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#程序设计有所帮助。

软件
前端设计
程序设计
Java相关