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

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

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

  • 相关阅读:
    Mongodb 与 MySQL对比
    MongoDB的真正性能-实战百万用户
    走进科学之揭开神秘的"零拷贝"!
    对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
    <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道
    MSSQL复制功能实现与Oracle数据库同步
    SQLServer与Oracle的数据同步(触发器trigger)
    ORACLE和SQL SERVER的数据同步常用方法
    MS SQL SERVER: msdb.dbo.MSdatatype_mappings & msdb.dbo.sysdatatypemappings
    FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。
  • 原文地址:https://www.cnblogs.com/myself/p/1658716.html
Copyright © 2011-2022 走看看