• PropertyInfo 类


            [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();
            }

  • 相关阅读:
    双端队列广搜
    多源bfs
    leetcode刷题-67二进制求和
    leetcode刷题-66加一
    leetcode刷题-64最小路径和
    leetcode刷题-62不同路径2
    leetcode刷题-62不同路径
    leetcode刷题-61旋转链表
    leetcode刷题-60第k个队列
    leetcode刷题-59螺旋矩阵2
  • 原文地址:https://www.cnblogs.com/rancrazy/p/7347208.html
Copyright © 2020-2023  润新知