SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类
生活随笔
收集整理的這篇文章主要介紹了
SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ObjectHelper的主要功能有:
1.通過反射獲取Entity的實例的字段值和表名,跳過自增鍵并填入Dictionary<string,string>中。
1 namespace RA.DataAccess.Common 2 { 3 internal static class ObjectHelper 4 { 5 /// <summary> 6 /// 獲取Entity實例的字段名和值(用于更新和插入數據) 7 /// </summary> 8 /// <param name="obj"></param> 9 /// <returns></returns> 10 public static Dictionary<string,object> GetKeyValue(object obj){ 11 var data = new Dictionary<string, object>(); 12 foreach (var i in obj.GetType().GetProperties()) 13 { 14 if (IsContainsAttribute(i.GetCustomAttributes(true))) continue; 15 var value = obj.GetType().GetProperty(i.Name).GetValue(obj, null); 16 data.Add(i.Name, value); 17 } 18 return data; 19 } 20 21 /// <summary> 22 /// 是否包含自增鍵,在插入表時可以跳過自增鍵的設置 23 /// </summary> 24 /// <param name="attrs"></param> 25 /// <returns></returns> 26 private static bool IsContainsIndentityAttribute(IEnumerable<object> attrs) 27 { 28 return attrs.OfType<IdentityAttribute>().Any(); 29 } 30 } 31 }?2.通過反射,為實例賦值,此處只是列舉了常用的數據類型:int,string和DataTime
1 /// <summary> 2 /// 為通過反射生成的實例賦值 3 /// </summary> 4 /// <typeparam name="T">實例的類型</typeparam> 5 /// <param name="obj">實例</param> 6 /// <param name="value">值</param> 7 /// <param name="key">成員名稱</param> 8 public static void SetValue<T>(ref T obj, Object value, String key) where T : class 9 { 10 var property = obj.GetType().GetProperty(key); 11 var type = property.PropertyType.Name; 12 if (value is System.DBNull) 13 { 14 property.SetValue(obj, null, null); 15 return; 16 } 17 switch (type) 18 { 19 case "Int32": 20 property.SetValue(obj, int.Parse(value.ToString()), null); 21 break; 22 case "String": 23 property.SetValue(obj, value.ToString(), null); 24 break; 25 case "DateTime": 26 property.SetValue(obj, (DateTime)value, null); 27 break; 28 default: 29 property.SetValue(obj, value, null); 30 break; 31 } 32 }?
轉載于:https://www.cnblogs.com/kakura/p/6108923.html
總結
以上是生活随笔為你收集整理的SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql存储时间字段
- 下一篇: gitbook安装与使用之windows