一、反射-类操作

//1.获取对象所有的属性名
Student stu = new Student();
//获取当前类名称
Console.WriteLine(stu.GetType().Name);
//命名空间 和名称
Console.WriteLine(stu.GetType().FullName);
//2.指定类型,动态创建对象
Student stu2 = Activator.CreateInstance<Student>();
Console.WriteLine(stu2.ToJsonString());

二、反射属性操作之PropertyInfo

使用PropertyInfo操作属性,简单方便

//反射属性操作 方式二
Student stu = new Student();
Type t = stu.GetType();
/*****操作所有属性*****/
//1.获取指定名称的属性
PropertyInfo[] pro2 = t.GetProperties();
foreach (PropertyInfo item in pro2)
{
//Name----属性名称
//PropertyType----字段类型 例如:System.Int32
Console.WriteLine(item.Name + "--->" + item.MemberType + "--->" + item.PropertyType);
} //2.获取或设置属性的值
foreach (PropertyInfo item in pro2)
{
object value = null;
if (item.Name == "ID")
value = ;
else
value = "张三";
item.SetValue(stu, value);
//获取属性值
Console.WriteLine(item.GetValue(stu));
}
/**操作单个属性***/
PropertyInfo id = t.GetProperty("ID");
id.SetValue(stu,);
Console.WriteLine(id.GetValue(stu));

三、反射属性操作之MemberInfo

MemberInfo可以操作所有的类成员

Student stu = new Student();
//反射属性操作 方式一
Type t = stu.GetType();
//GetMembers() 返回当前 System.Type 的所有公共成员
//获取对象的所有公共属性名称和属性值
MemberInfo[] members = t.GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (MemberInfo item in members)
{
if (item.MemberType != MemberTypes.Property)
{
Console.WriteLine("当前属性为:" + item.MemberType);
continue;
}
Console.WriteLine(item.Name); //属性名称
Console.WriteLine(item.MemberType);//属性类型
//获取属性的值
object value = null;
if (item.Name == "ID")
value = ;
else value = "张三";
t.InvokeMember(item.Name, BindingFlags.SetProperty, null, stu, new object[] { value });
//设置属性的值
object result = t.InvokeMember(item.Name, BindingFlags.GetProperty, null, stu, null);
Console.WriteLine(result);
}

更多参考:

http://blog.163.com/m13864039250_1/blog/static/213865248201372833416948/

http://blog.163.com/m13864039250_1/blog/static/213865248201372123134158/

C# 反射之属性操作的更多相关文章

  1. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...

  2. 如何利用反射简化Servlet操作

    如何利用反射简化Servlet操作   一.反射的实现 新建类BaseServlet,继承HttpServlet(不需要在web.xml文件中配置) 1.在doPost()方法中处理请求乱码,并调用d ...

  3. 了解JavaScript 对象的属性操作

    提起操作, 很多人都会想到我们学习过程中最经常做的操作, 就是对数据库进行增, 删, 改, 查, 既然提到这个, 那么对于对象的属性操作也不例外, 基本上可以说也是这几个操作. JS中对象的属性标签 ...

  4. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  5. jQuery-1.9.1源码分析系列(八) 属性操作

    jQuery的属性操作主要包括 jQuery.fn.val jQuery.fn.attr jQuery.fn.removeAttr jQuery.fn.prop jQuery.fn.removePro ...

  6. jQuery属性操作

    jQuery 的属性操作的核心部分其实就是对底层 getAttribute().setAttributes()等方法的一系列兼容性处理 ...if ( notxml ) { name = name.t ...

  7. 利用@property实现可控的属性操作

    利用@property实现可控的属性操作 Python中没有访问控制符, 不像java之类的 public class Person{ private int x public int getAge( ...

  8. js学习笔记2---HTML属性操作

    1.HTML属性操作:读.写 属性名 属性值   2.属性读操作:获取.找到 a) 语法:元素.属性名 如:document.getElementById(“btn”).value; b) 字符串的连 ...

  9. jQuery源代码学习之八——jQuery属性操作模块

    一.jQuery属性模块整体介绍 jQuery的属性操作模块分四个部分:html属性操作,dom属性操作,类样式操作,和值操作. html属性操作(setAttribute/getAttribute) ...

随机推荐

  1. 【HDOJ】2851 Lode Runner

    开始没理解题意.原来destinations是指路的序号.而不是点.DP. #include <stdio.h> #include <string.h> ]; typedef ...

  2. 【数据结构】之二叉树的java实现

    转自:http://blog.csdn.net/wuwenxiang91322/article/details/12231657 二叉树的定义: 二叉树是树形结构的一个重要类型.许多实际问题抽象出来的 ...

  3. ZOJ --- 3516 Tree of Three

    Tree of Three Time Limit: 2 Seconds      Memory Limit: 65536 KB Now we have a tree and some queries ...

  4. ARM学习笔记3——数据处理指令

    一.数据处理指令概述 1.概念 数据处理指令是指对存放在寄存器中的数据进行处理的指令.主要包括算术指令.逻辑指令.比较与测试指令以及乘法指令 如果在数据处理指令前使用S前缀,指令的执行结果将会影响CP ...

  5. ShadowGun Deadzone 放出 GM Kit Mod 包

    一向在技术上比较开放的 MadFinger 继上次给出 shadowgun 的关卡包之后,这次更加大方的给出了更加完整的关卡的代码,甚至包括服务器:ShadowGun Deadzone GM Kit. ...

  6. bzoj 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居(set+并查集)

    Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的 时候有一个独一无二的位置坐标Xi,Yi( ...

  7. R-note1

    R 新手 如果你在R上遇到困难,那么你从这两个地方可以得到解答: http://www.r-project.org/mail.html http://stackoverflow.com/questio ...

  8. HTML5与CSS3权威指南.pdf1

    第2章 HTML5与HTML4的区别 HTML5的文件扩展符与内容类型保持不变仍为“.html”或“.htm”,内容类型(ContentType)仍为“text/html” DOCTYPE声明: HT ...

  9. JavaScript高级程序设计30.pdf

    第12章 DOM2和DOM3 DOM1级主要定义的是HTML和XML文档的底层结构.DOM2和DOM3则在这个结构的基础上引入了更多的交互能力,也支持更高级的XML特性 DOM2和DOM3级分为许多模 ...

  10. Android SeekBar 和 draw9patch 的使用

    今天要使用一个SeekBar控件,其实我觉得Android默认样式已经很不错了,无奈设计不同意,而且SeekBar左右两边也有图片,默认样式和图片也确实不协调,因此这里使用图片自定义SeekBar样式 ...