• 反射获取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

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

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

  • 相关阅读:
    VS2015快捷键
    layui radio 监听
    jsvascript === 和==的区别
    bootstrap table checkbox 根据值选中、禁用等
    table 中 display为 block 时 tbody 失去宽度
    打包成Zip
    Server.MapPath()用法
    JS比较当前时间是否在指定时间段内
    从多张表获取数据,重组DataTable,根据重组路径,打包下载文件。
    checkbox 根据值选中
  • 原文地址:https://www.cnblogs.com/myself/p/1658716.html
Copyright © 2020-2023  润新知