C#反射遍历/查询类中的属性以及值
来源:互联网 发布:sql语句建表 列名别名 编辑:程序博客网 时间:2024/06/02 02:40
遍历一个类/或类对象的属性/值,很有用,看个例子
using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication13{ class Program { static void Main(string[] args) { //新建一个对象 Object o = new {name="zhifeiya",@class="myclass" }; //如果有name这个属性 if(JudgeHasProperty("name",o)) { //输出name的值 Console.WriteLine(GetPropertyValueByName("name",o).ToString()); } //遍历该ae对象的name/value (这是一个系统类,这里拿来测试一下) ApplicationException ae = new ApplicationException(); ForeachPropertyValues(ae); Console.Read(); } /// <summary> /// 判断 对象 中是否有该属性(不区分大小写) /// </summary> /// <param name="PropertyName">属性名称</param> /// <param name="o">目标对象</param> /// <returns></returns> public static bool JudgeHasProperty(string PropertyName,Object o) { if (o == null) { o = new { }; } PropertyInfo[] p1 = o.GetType().GetProperties(); bool b = false; foreach (PropertyInfo pi in p1) { if (pi.Name.ToLower() == PropertyName.ToLower()) { b = true; } } return b; } /// <summary> /// 获取指定属性的值(不区分大小写) /// </summary> /// <param name="PropertyName">属性名称</param> /// <param name="o">目标对象</param> /// <returns></returns> public static Object GetPropertyValueByName(string PropertyName, Object o) { if (o == null) { o = new { }; } //创建一个返回对象 Object returnObject=new Object(); PropertyInfo[] p1 = o.GetType().GetProperties(); foreach (PropertyInfo pi in p1) { if (pi.Name.ToLower() == PropertyName.ToLower()) { returnObject = pi.GetValue(o); } } return returnObject; } /// <summary> /// 遍历属性的名称/值(显示形式:name=value) /// </summary> /// <param name="o"></param> public static void ForeachPropertyValues( Object o) { if (o == null) { o = new { }; } PropertyInfo[] p1 = o.GetType().GetProperties(); foreach (PropertyInfo pi in p1) { Console.WriteLine(pi.Name + ":" + pi.GetValue(o,null)); } } }}
运行结果:
场景案例:比如想对HtmlHelper写一个扩展的生成Button标签的方法:
public static MvcHtmlString MyButton(this HtmlHelper h, Object HtmlAttribute) { if (HtmlAttribute == null) { HtmlAttribute = new { }; } string str = ""; PropertyInfo[] p1 = HtmlAttribute.GetType().GetProperties(); foreach (PropertyInfo pi in p1) { str += " " + pi.Name + "='" + pi.GetValue(HtmlAttribute, null).ToString() + "' "; } return new MvcHtmlString( "<input type='button' " + str + " >"); }使用的时候,在视图中,我们就可以这样直接调用了:
@Html.MyButton(new { id="but",name="butname",@class="myclass",value="submit"})生成的html代码:
<input type='button' id='but' name='butname' class='myclass' value='submit' >
0 0
- C#反射遍历/查询类中的属性以及值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- C# 反射属性值和遍历属性名
- C#利用反射遍历对象的属性和属性值
- c#利用反射轻松遍历类获取其所有属性及属性值
- 使用java反射机制遍历实体类的属性和类型以及值
- unity中利用反射遍历类或者结构体中的每一个字段属性 、类型 、值
- 反射,遍历类的属性
- C# 获得对象属性和属性值 C#利用反射遍历对象的属性和属性值
- java日期以及使用Java反射机制遍历实体类的属性和类型
- 数组的遍历和元素输出的四种方法
- Android 获取手机总内存和可用内存等信息
- leetcode:Linked List Cycle II
- Android百度地图sdk3.0隐藏放大缩小控件
- 和小白一起学ABAP -- 7 阅读经典之SAP程序设计
- C#反射遍历/查询类中的属性以及值
- c语言练习 5-3. 求a的连续和
- 图片自适应浏览器
- 黑马程序员—java5的枚举
- C++设计模式之单例模式
- [转] Linux常用C函数-日期时间篇
- Android多任务下载,使用Notification更新进度条
- MFC单例运行三种方式
- 不想当业务员的培训经理不是好的CEO