反射的小代码段
来源:互联网 发布:ac尼尔森数据报告 编辑:程序博客网 时间:2024/06/06 09:38
/// <summary> /// 得到私有字段的值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="instance"></param> /// <param name="fieldname"></param> /// <returns></returns> public static T GetPrivateField<T>(this object instance, string fieldname) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); FieldInfo field = type.GetField(fieldname, flag); return (T)field.GetValue(instance); } /// <summary> /// 得到私有属性的值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="instance"></param> /// <param name="propertyname"></param> /// <returns></returns> public static T GetPrivateProperty<T>(this object instance, string propertyname) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); PropertyInfo field = type.GetProperty(propertyname, flag); return (T)field.GetValue(instance, null); } /// <summary> /// 设置私有成员的值 /// </summary> /// <param name="instance"></param> /// <param name="fieldname"></param> /// <param name="value"></param> public static void SetPrivateField(this object instance, string fieldname, object value) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); FieldInfo field = type.GetField(fieldname, flag); field.SetValue(instance, value); } /// <summary> /// 设置私有属性的值 /// </summary> /// <param name="instance"></param> /// <param name="propertyname"></param> /// <param name="value"></param> public static void SetPrivateProperty(this object instance, string propertyname, object value) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); PropertyInfo field = type.GetProperty(propertyname, flag); field.SetValue(instance, value, null); } /// <summary> /// 调用私有方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="instance"></param> /// <param name="name"></param> /// <param name="param"></param> /// <returns></returns> public static T CallPrivateMethod<T>(this object instance, string name, params object[] param) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); MethodInfo method = type.GetMethod(name, flag); return (T)method.Invoke(instance, param); }
- 反射的小代码段
- 激活所有代码段的小程序
- iOS 的小功能代码段
- 小代码段
- [代码段]反射输出一个Type的信息
- SublimeText自定义小代码段
- VS2008中注释整段代码的小技巧
- 通过小代码体验程序中BSS段和DATA段的差异
- 通过小代码体验程序中BSS段和DATA段的差异
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- 数据段、代码段、堆栈段、BSS段的区别
- html5学习笔记之二(智能表单设计)
- 随机生成n个不同的整数
- Visual Studio 2008常用快捷键
- 《C++第十五周实验报告3-1、2》---对照运行的结果和教材中关于格式控制的说明
- Shell排序
- 反射的小代码段
- Android 在 TextView 中设置超链接、颜色、字体、图片
- PMP九五至尊图
- C# 实现全局变量的方法
- C++设计模式之十三:Chain of Responsibility(职责链)
- decode函数 类似于判断语句
- 占位
- 关于static语句,构造代码块,构造方法的执行顺序
- PHP通过Thrift操作Hbase