【.net】反射类时只获取当前类成员

 public int ADDEntityCurrent(T Entity)
        {
            try
            {
//使用typeof获取泛型类型
                Type type = typeof(T);
                object oT = Activator.CreateInstance(type);
//通过Type 的GetProperties方法并添加相关参数获取当前成员(不包括继承成员)属性
                ///获取当前实例成员(不考虑继承成员)且公共成员的属性
                ///BindingFlags.DeclaredOnly指定只应考虑在所提供类型的层次结构级别上声明的成员。 不考虑继承的成员。
                ///BindingFlags.Instance指定实例成员要包括在搜索中。
                ///BindingFlags.Public指定公共成员要包括在搜索中。
                var oEntity = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance |
                BindingFlags.Public);
//此时获得的oEntity (System.Reflection.PropertyInfo[]数组)为当前成员属性的数组
                //获取字段
                var section = "";
                //获取值
                var value = "";
//遍历属性并拼接插入SQL字符串
                foreach (var item in oEntity)
                {
                    var query = item.GetCustomAttributesData();
                    if (query.Count > 0 && (bool)query[0].ConstructorArguments[0].Value)
                    {
                    }
                    else
                    {
                        if (!item.Name.Equals("ID") && !item.Name.Equals("FID") && !item.Name.Equals("id") && !item.Name.Equals("Base_id"))
                        {
                            section = section + item.Name + ",";
                            value = value + "'" + item.GetValue(Entity, null) + "'" + ",";
                        }
                    }
                }
                

                string execSql = " insert into " + type.Name + "(" + section.Substring(0, section.Length - 1) + ") values(" + value.Substring(0, value.Length - 1) + ");SELECT @@Identity ";
               
//执行SQL字符串
                return SenctionHelper.ExecuteScalar(execSql);
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw e;
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值