C#中的反射。是C#中特別重要也是特別神奇的特性,對后面學習框架,了解框架的原理。以及自己寫框架,都是必不可少的。學習反射的過程中。總給我一種茅塞頓開的感覺,以前不懂的,現在懂了
反射的介紹:https://www.cnblogs.com/Kare/p/4601436.html
我學了反射以后。也想寫一個框架。。哈哈哈 架構師像我招手 。。。。。
增加的方法(什么類都可以)
前提:類名和數據庫表名一致。屬性名和數據庫列名一致。類要有無參構造函數。
:主鍵必須為id 自增,(簡化)
/// <summary> /// 單行添加 /// </summary> /// <param name="obj">哪個對象</param> /// <returns>是否成功</returns> public static bool Insert(Object obj) { //獲取type對象 Type type = obj.GetType(); //獲取所有屬性 PropertyInfo[] propertys = type.GetProperties(); //定義2個數組接受屬性和值 Length - 1 添加不用id string[] col = new string[propertys.Length - 1]; string[] value = new string[propertys.Length - 1]; //索引 int count = 0; foreach (PropertyInfo prop in propertys) { if (prop.Name!="id") { col[count] = prop.Name;//拿到屬性名稱 value[count] = prop.GetValue(obj).ToString();//拿到屬性的值 count++; } } //拼接SQL語句 StringBuilder sbsql = new StringBuilder(); //insert into [表名] ([列名1],。。。) values('值1',。。。。) sbsql.Append("insert into [").Append(type.Name).Append("]([") .Append(string.Join("],[",col)).Append("])"); sbsql.Append("values ('").Append(string.Join("','", value)).Append("')"); //執行 int num=SqlseverDBhelper.ExecuteNonQuery(sbsql.ToString()); return num>0; }
調用
static void Main(string[] args) { User u1 = new User(); u1.Uname = "王五"; u1.Uadd = "zhongguo"; u1.Money = 20.51m; u1.Uphone = "15827751569"; for (int i = 0; i < 5; i++) { if (Eqrom.Insert(u1)) { Console.WriteLine("添加成功"); } } Console.WriteLine("添加5條 王五 一樣的數據"); Console.ReadKey(); }
總結:反射 我們自己寫的時候很少 但是很重要,一定要理解。會用,對后面的成長肯定是大用處的