zoukankan      html  css  js  c++  java
  • 反射获取Class中Property的值

    通过反射来获取类中属性的值是一个反射很常见的应用,今天小晨晨给了个他的需求让我帮着写下代码。

    需求如下:

    实现自定义类的排序,排序的字段可以自己设置。

    很明显了,反射的应用,代码很简单,贴出来

       

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using System.Collections;

    namespace ReflectToGetProperty
    {
        public class Program
        {
            static void Main(string[] args)
            {
                Class1 myClass1 = new Class1();
                myClass1.ID = 1;
                myClass1.Name = "myself";

                Class1 myClass2 = new Class1();
                myClass2.ID = 2;
                myClass2.Name = "heqingming";

                List<Class1> list = new List<Class1>();
                list.Add(myClass1);
                list.Add(myClass2);

                Console.WriteLine("排序前");
                foreach (Class1 item in list)
                {
                    Console.WriteLine(item.ID);
                    Console.WriteLine(item.Name);
                    Console.WriteLine();
                }

                Class1Compare compare = new Class1Compare();
                compare.FieldName = "Name";//这里算是自己可以定制按照哪个字段进行排序
                list.Sort(compare);

                Console.WriteLine("排序后");
                foreach (Class1 item in list)
                {
                    Console.WriteLine(item.ID);
                    Console.WriteLine(item.Name);
                    Console.WriteLine();
                }

                Console.Read();
            }
        }

        public class Class1
        {
            public int ID { get; set; }

            public string Name { get; set; }

        }

        public class Class1Compare : IComparer<Class1>
        {
            public string FieldName { get; set; }

            #region IComparer<Class1> 成员

            public int Compare(Class1 x, Class1 y)
            {

          //反射的应用
                 Type myType = x.GetType();

                return string.Compare(myType.GetProperty(this.FieldName).GetValue(x, null).ToString(), myType.GetProperty(this.FieldName).GetValue(y, null).ToString());
            }

            #endregion
        }
    }

    运行结果:

    --------------------------------------

    排序前
    1
    myself

    2
    heqingming

    排序后
    2
    heqingming

    1
    myself

    --------------------------------------

    代码比较简单,不做过多解释。

  • 相关阅读:
    牛客 4C Alliances (dfs序)
    AC日记——楼房 codevs 2995
    AC日记——丑数 codevs 1246
    AC日记——砍树 codevs 1388
    AC日记——地鼠游戏 codevs 1052
    AC日记——蓬莱山辉夜 codevs 2830
    AC日记——最小的N个和 codevs 1245
    AC日记——二叉堆练习3 codevs 3110
    AC日记——滑动窗口 洛谷 P1886
    AC日记——忠诚 洛谷 P1816
  • 原文地址:https://www.cnblogs.com/myself/p/1658716.html
Copyright © 2011-2022 走看看