日期:2014-05-17  浏览次数:20829 次

【注意】大家看看我这段代码能不能实现类实例的插入!!【窃喜】小有成就感啊
C# code

        public void Insert()
        {
            Cormander.DataAccess.MemberInfor memberInfor = new DataAccess.MemberInfor();
            System.Reflection.PropertyInfo[] properties = typeof(Cormander.DataAccess.MemberInfor).GetProperties();
            foreach (System.Reflection.PropertyInfo property in properties)
            {
                property.SetValue(memberInfor, property.GetValue(this,null), null);
            }
            using (Cormander.DataAccess.CormanderDataContext cdc = new DataAccess.CormanderDataContext())
            {
                cdc.MemberInfor.InsertOnSubmit(memberInfor);
                cdc.SubmitChanges();
            }
        }


上述代码是一个实体类的插入方法。引用了数据层的linq to sql实例
之前每次写插入的时候总要为类的每个属性一个一个赋值例如
C# code

memberInfor.Id =this.Id;


如果属性很多的话要烦的要死。
现在使用了反射读取了类的所有属性。然后遍历所有属性,并调用该属性的SetValue方法,给memberInfor对象赋值。

哈哈~~
本人菜鸟~好不容易写出来的,欢迎大神们指正哈~


------解决方案--------------------
不要光看方不方便,还要看效率
------解决方案--------------------
C# code

明显在楼主语气中发现
楼主目前心情:☆☆☆☆☆
当前分配分数:☆
楼主当前状态:☆☆
楼主意图不轨:☆☆☆☆☆
楼主的色指数:☆☆☆☆☆

------解决方案--------------------
用反射是有效率问题的。同时,这样的写法不安全,一般都是要做一些数据处理或边界检查的,所以意义不大,当练习反射吧。。。
------解决方案--------------------
不过,总的思想是好的,能把代码精简再精简,当然前提是可读性好的话,保持这种态度下去,会有成长的