首页 > 编程 > C# > 正文

C#实现实体类与字符串互相转换的方法

2019-10-29 21:39:06
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#实现实体类与字符串互相转换的方法,涉及C#字符串及对象的相互转换技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace PackDLL.Data.ConvertData 
  5. /// <summary> 
  6. /// 实体类、字符串互相转换 
  7. /// </summary> 
  8. public class PackReflectionEntity<T> 
  9. /// <summary> 
  10. /// 将实体类通过反射组装成字符串 
  11. /// </summary> 
  12. /// <param name="t">实体类</param> 
  13. /// <returns>组装的字符串</returns> 
  14. public static string GetEntityToString(T t) 
  15. System.Text.StringBuilder sb = new StringBuilder(); 
  16. Type type = t.GetType(); 
  17. System.Reflection.PropertyInfo[] propertyInfos = type.GetProperties(); 
  18. for (int i = 0; i < propertyInfos.Length; i++) 
  19. sb.Append(propertyInfos[i].Name + ":" + propertyInfos[i].GetValue(t, null) + ","); 
  20. return sb.ToString().TrimEnd(new char[] { ',' }); 
  21. /// <summary> 
  22. /// 将反射得到字符串转换为对象 
  23. /// </summary> 
  24. /// <param name="str">反射得到的字符串</param> 
  25. /// <returns>实体类</returns> 
  26. public static T GetEntityStringToEntity(string str) 
  27. string[] array = str.Split(','); 
  28. string[] temp = null
  29. Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
  30. foreach (string s in array) 
  31. temp = s.Split(':'); 
  32. dictionary.Add(temp[0], temp[1]); 
  33. System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(T)); 
  34. T entry = (T)assembly.CreateInstance(typeof(T).FullName); 
  35. System.Text.StringBuilder sb = new StringBuilder(); 
  36. Type type = entry.GetType(); 
  37. System.Reflection.PropertyInfo[] propertyInfos = type.GetProperties(); 
  38. for (int i = 0; i < propertyInfos.Length; i++) 
  39. foreach (string key in dictionary.Keys) 
  40. if (propertyInfos[i].Name == key.ToString()) 
  41. propertyInfos[i].SetValue(entry, GetObject(propertyInfos[i], dictionary[key]), null); 
  42. break
  43. return entry; 
  44. /// <summary> 
  45. /// 转换值的类型 
  46. /// </summary> 
  47. /// <param name="p"></param> 
  48. /// <param name="value"></param> 
  49. /// <returns></returns> 
  50. static object GetObject(System.Reflection.PropertyInfo p, string value) 
  51. switch (p.PropertyType.Name.ToString().ToLower()) 
  52. case "int16"
  53. return Convert.ToInt16(value); 
  54. case "int32"
  55. return Convert.ToInt32(value); 
  56. case "int64"
  57. return Convert.ToInt64(value); 
  58. case "string"
  59. return Convert.ToString(value); 
  60. case "datetime"
  61. return Convert.ToDateTime(value); 
  62. case "boolean"
  63. return Convert.ToBoolean(value); 
  64. case "char"
  65. return Convert.ToChar(value); 
  66. case "double"
  67. return Convert.ToDouble(value); 
  68. default
  69. return value; 

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表