zoukankan      html  css  js  c++  java
  • C#利用反射来判断对象是否包含某个属性的实现方法

    public static class SerializeLibrary
        {
            /// <summary>
            /// 利用反射来判断对象是否包含某个属性
            /// </summary>
            /// <param name="instance">object</param>
            /// <param name="propertyName">需要判断的属性</param>
            /// <returns>是否包含</returns>
            public static bool ContainProperty(this object instance, string propertyName)
            {
                if (instance != null && !string.IsNullOrEmpty(propertyName))
                {
                    PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
                    return (_findedPropertyInfo != null);
                }
                return false;
            }
    
            /// <summary>
            /// 获取对象属性值
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="t"></param>
            /// <param name="propertyname"></param>
            /// <returns></returns>
            public static string GetObjectPropertyValue<T>(T t, string propertyname)
            {
                Type type = typeof(T);
                PropertyInfo property = type.GetProperty(propertyname);
                if (property == null)
                {
                    return string.Empty;
                }
                object o = property.GetValue(t, null);
                if (o == null)
                {
                    return string.Empty;
                }
                return o.ToString();
            }
    
            /// <summary>
            /// 获取属性列表
            /// </summary>
            /// <typeparam name="T"></typeparam>
            public static void GetObjectProperty<T>()
            {
                Type t = typeof(T);
                System.Reflection.PropertyInfo[] properties = t.GetProperties();
                foreach (System.Reflection.PropertyInfo info in properties)
                {
                    Console.Write("name=" + info.Name + ";" + "type=" + info.PropertyType.Name + ";value=" + GetObjectPropertyValue<Object>(new object(), info.Name) + "<br />");
                }
            }
        }

    代码使用方法如下:

    bool cc =ContainProperty("cc");
    bool aa =ContainProperty("Age");
  • 相关阅读:
    剑指offer---二叉搜索树的第k个结点
    剑指offer---把数组排成最小的数
    剑指offer---连续子数组的最大和
    剑指offer---最小的K个数
    Navicat for MySQL(Ubuntu)过期解决方法
    Ubuntu 无法应用原保存的显示器配置
    ubuntu 18.04 install gitlab-ce
    Flask 使用过程
    python版本 3.7.4rc1 (stable) / 3.8.0b1 (pre-release) / 3.9.0a0 (in development)
    Windows10 and MySQL使用
  • 原文地址:https://www.cnblogs.com/wu-peng/p/10882080.html
Copyright © 2011-2022 走看看