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();
}
总结:反射 我们自己写的时候很少 但是很重要,一定要理解。会用,对后面的成长肯定是大用处的