惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Project Zero
Project Zero
V
Vulnerabilities – Threatpost
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
C
Cisco Blogs
A
Arctic Wolf
月光博客
月光博客
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
量子位
小众软件
小众软件
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
N
Netflix TechBlog - Medium
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
Y
Y Combinator Blog
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Schneier on Security
D
Docker
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
GbyAI
GbyAI
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
J
Java Code Geeks
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tenable Blog
B
Blog
Know Your Adversary
Know Your Adversary
IT之家
IT之家

博客园 - o0myself0o

利用线程池实现多客户端和单服务器端Socket通讯(二):异步编程模型实现 生产者消费者模式,代码中碰到的疑问(已解决) 利用线程池实现多客户端和单服务器端Socket通讯(一):同步方式 Entity Framework 4.0 ObjectContext下的各种方法实践 题目:若干个不重复数,打乱顺序输出 wtf js(四) - o0myself0o - 博客园 wtf js(三) number的类型不是number wtf js(二) 算法:给定两个已从小到大排好序的整型数组arrA和arrB,将两个数组合并成arrC,使得arrC也要按从小到大的顺序排好序 应用中的单例模式 面试题:给你三个bool类型变量a, b, c,判断至少有两个为true javascript面向对象编程(一) - o0myself0o - 博客园 wtf js(一) - o0myself0o - 博客园 社区网站功能实现系列(三):社区页面无刷新回发的一种实现方式 社区网站功能实现系列(二):社区内容分享到别的SNS 社区网站功能实现系列(一):多国语言的实现 A*寻路初探 闲谈ASP.NET 2.0缓存技术 使用 jQuery 简化 Ajax 开发
反射获取Class中Property的值
o0myself0o · 2010-01-28 · via 博客园 - o0myself0o

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

需求如下:

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

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

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

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

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