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

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

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

  • 相关阅读:
    小心触发器脚本陷阱
    delphi程序如何防止多实例启动
    自定义控件wxIpCtrl –(Ip Address)
    wxWidgets流操作 (三) wxMemoryInputStream/wxMemoryOutputStream与wxImage交互
    D2 std.stream 文件读写小练习
    挂钟程序
    Lazarus+FPC2.7.1 下DLL 创建及调用
    正则表达式30分钟入门教程
    Word frequency program终结
    阅读作业第二篇
  • 原文地址:https://www.cnblogs.com/myself/p/1658716.html
Copyright © 2011-2022 走看看