[AttributeUsage(AttributeTargets.Property)]

  //Models 特性
        public class CanWriteAttribute : Attribute
        {
            public bool CanWrite { get; set; }
        }
        public System.Data.SqlClient.SqlParameter[] AddParameter<T>(T Models)
        {
            List<System.Data.SqlClient.SqlParameter> List = new List<System.Data.SqlClient.SqlParameter>();
            object objModels = Models;
            Type type = objModels.GetType();
            //Visual Basic
            //System.Reflection.PropertyInfo[] PInfo = type.GetProperties(BindingFlags.NonPublic OR BindingFlags.Instance OR BindingFlags.Static);
            //Visual C# 必须使用 BindingFlags.Public|BindingFlags.GetProperty|BindingFlags.Instance
            PropertyInfo[] PInfo = type.GetProperties(BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance);
            foreach (PropertyInfo item in PInfo)
            {
                if (item == null)
                {
                    continue;
                }
                var IsCanWrite = Attribute.GetCustomAttribute(item, typeof(CanWriteAttribute)) as CanWriteAttribute;
                //实体包含CanWriteAttribute特性 则跳出
                if (IsCanWrite != null && !IsCanWrite.CanWrite)
                {
                    continue;
                }
                if (item.PropertyType == typeof(bool))
                {
                    continue;
                }
                //属性不可写
                if (!item.CanWrite)
                {
                    continue;
                }
                //该属性是否可读
                if (item.CanRead)
                {
                    object objValue = item.GetValue(Models, item.GetIndexParameters());
                    //Key Value加入SqlParameter
                    List.Add(new System.Data.SqlClient.SqlParameter(item.Name, objValue));
                }
            }
            return List.ToArray();
        }

PropertyInfo 类的更多相关文章

  1. C#之反射(PropertyInfo类)

    1.引入命名空间:System.Reflection:程序集:mscorlib(在mscorlib.dll中) 2.示例代码(主要是getType().setValue().getValue()方法) ...

  2. .NET基础篇——Entity Framework 数据转换层通用类

    在实现基础的三层开发的时候,大家时常会在数据层对每个实体进行CRUD的操作,其中存在相当多的重复代码.为了减少重复代码的出现,通常都会定义一个共用类,实现相似的操作,下面为大家介绍一下Entity F ...

  3. C#必须掌握的系统类

    系统类  Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构 ...

  4. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  5. .Net 中的反射(查看基本类型信息) - Part.2

    反射概述 和Type类 1.反射的作用 简单来说,反射提供这样几个能力:1.查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata):2.迟绑定(Late-Binding)方法和属性.3 ...

  6. C#4.0图解教程 - 第24章 反射和特性 - 1.反射

    24.1 元数据和反射 有关程序及类型的数据被成为 元数据.他们保存在程序集中. 程序运行时,可以查看其他程序集或其本身的元数据.一个运行的程序查看本身元数据或其他程序的元数据的行为叫做 反射. 24 ...

  7. 《Programming WPF》翻译 第9章 3.自定义功能

    原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框 ...

  8. .Net 中的反射(查看基本类型信息)

    反射概述 和Type类 1.反射的作用 简单来说,反射提供这样几个能力:1.查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata):2.迟绑定(Late-Binding)方法和属性.3 ...

  9. C# 程序集 和 反射

    .Net反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为.Net的反射机 ...

随机推荐

  1. Python学习第二阶段,Day2,import导入模块方法和内部原理

    怎样导入模块和导入包?? 1.模块定义:代码越来越多的时候,所有代码放在一个py文件无法维护.而将代码拆分成多个py文件,同一个名字的变量互不影响,模块本质上是一个.py文件或者".py&q ...

  2. Linux命令学习(2): scp和rsync基本用法与断点续传

    版权声明:本文为博主原创文章,未经允许不得转载. 引子 在平常的工作中,我经常需要在远程服务器和本地之间传输文件. 以前我都使用scp命令,直到今天因为网络中断,scp出现了stalled. 因为上传 ...

  3. git 连接github.com 并配置密钥

    传送门:http://www.jianshu.com/p/ff1034ed270e #备份ssh cd ~/.ssh $ ls $ mkdir key_backup //创建备份文件夹 $ cp id ...

  4. PAT 1123 Is It a Complete AVL Tree

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  5. TestNG常用注解

    原文链接:https://www.yiibai.com/testng/basic-annotations.html    以下是TestNG支持的注释列表: 注解 描述 @BeforeSuite 在该 ...

  6. 在 Oculus和 Gear VR上开发跨平台的 VR应用

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51433994 作者:car ...

  7. 【OpenCV, C++】实现向下光栅追踪检测边缘

    设计函数如下: 其中 void gratingdetect(Mat &graysrc, Mat &graydst, int high, int low); 参数列表中,第一项是输入的灰 ...

  8. No buffer space available错误解决方案

    生产环境,突然爆发问题,网络正常,但是报网络不通错误,重启tomcat立刻好使 开始以为是tomcat的问题,调查了很久,后来加上堆栈日志才发现 简单来说,就是1-4分钟之内,使用了大量的http请求 ...

  9. Discuz论坛迁移需要修改的3个配置文件

    需要修改的3个地方: \config\config_global.php \config\config_ucenter.php \uc_server\data\config.inc.php

  10. Mutual Training for Wannafly Union #6

    A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...