利用反射获得类的public static/const成员的值实例
首先,我们定义一个类:
class CDynamic { #if true public const string TableName = "p_battlerecord"; // OK //public static string TableName = "p_battlerecord"; // OK #else public static string TableName // 用属性不行 { get { return "hello"; } } #endif public string Name { get; set; } public int Add(int a, int b) { return a + b; } }
写一个测试函数:
/// <summary> /// 获取类的public static/const成员的值 /// </summary> /// <typeparam name="T"></typeparam> public void TestGetValue<T>() { var tableName = typeof(T).GetField("TableName").GetValue(null); Console.WriteLine(tableName); }
调用测试接口:
public void test1() { #if false var d = new CDynamic(); // 简化演示, 未使用反射 var add = typeof(CDynamic).GetMethod("Add"); var ret = add.Invoke(d, new object[] { 1, 3 }); #else dynamic d = new CDynamic(); // 使用dynamic动态绑定 var ret = d.Add(1, 3); //d.Hello(); // 编译通过, 运行将出错(未包含Hello()的定义) TestGetValue<CDynamic>(); #endif //Console.WriteLine("sum = {0}, {1}", ret, s); }
完成!
以上这篇利用反射获得类的public static/const成员的值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
C++类中的static和const用法实例教程
static和const是C++程序设计中非常重要的概念,本文实例列举了C++类中的static和const的规则和用法.供大家参考借鉴.具体说明如下: 首先以代码用来举例说明.示例代码如下: class A { public: A():m(10) //const成员必须在构造函数的初始化构造列表中初始化 { q = 40; } void fun1()const { m++; //错误.const成员是常量,不能改变其值. n++; //正确.static变量n属于类,但是每个对象的函数都可以访
-
利用反射获得类的public static/const成员的值实例
首先,我们定义一个类: class CDynamic { #if true public const string TableName = "p_battlerecord"; // OK //public static string TableName = "p_battlerecord"; // OK #else public static string TableName // 用属性不行 { get { return "hello"; }
-
C++ 中const对象与const成员函数的实例详解
C++ 中const对象与const成员函数的实例详解 const对象只能调用const成员函数: #include<iostream> using namespace std; class A { public: void fun()const { cout<<"const 成员函数!"<<endl; } void fun() { cout<<"非const成员函数 !"<<endl; } }; int
-
详解C# 利用反射根据类名创建类的实例对象
"反射"其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 1.假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile("程序集路径,不能是相对路径"); // 加载程序集(EXE 或 DLL) dynamic obj = assembly.CreateInstance("类的完全限定名(即包括命名空
-
基于反射解决类复制的实现方法
假定一个类,类名是EtyBase,另一个类类名是EtyTwo,EtyTwo继承自EtyBase.现在要求EtyTwo的属性值从一个EtyBase中复制过来传统做法是 复制代码 代码如下: View Code public void CopyEty(EtyBase from, EtyBase to) {to.AccStatus = from.AccStatus;to.Alarm = from.Alarm;to.AlarmType = from.AlarmType;to.CarNum = from
-
利用反射获取Java类中的静态变量名及变量值的简单实例
JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了. public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //获取所有变量的值 Class clazz = Class.forName("com.qianmingxs.ScoreTable"); Field[] fields = clazz.g
-
C#实现利用反射简化给类字段赋值的方法
本文实例讲述了C#实现利用反射简化给类字段赋值的方法.分享给大家供大家参考.具体分析如下: 说明:这个例子主要的思路是建立一个类和数据库查询语句的字段结构是一致的 然后利用反射,直接用数据字段名称进行拼凑,给类对象的字段进行赋值 1.类的定义 namespace CCB_Donet.ClassFolder { public class FieldRuleInfo { public string gStrFNo; public string gStrFName; public string g
-
如何利用反射批量修改java类某一属性的代码详解
下面看下代码,具体代码如下所示: package utils.copyProperty; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; public class CopyProperty { public static Pro
-
Java利用反射实现框架类的方法实例
框架类的简单实现 实现步骤: 1. 加载配置文件 2. 获取配置文件中定义的数据 3. 加载该类进内存 主要讲解第一步:加载配置文件 的相关知识. //1.加载配置文件 //1.1创建Properties对象 Properties pro = new Properties(); //1.2加载配置文件,转换为一个集合 //1.2.1获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); Input
-
asp.net利用反射实现给model类赋值的方法
本文实例讲述了asp.net利用反射实现给model类赋值的方法.分享给大家供大家参考,具体如下: /// <summary> /// 给model类自动赋值 /// </summary> /// <param name="sqlstring">获取查询一个model实例的sql语句</param> /// <param name="obj">model实例对象</param> /// <
随机推荐
- Ext第一周 史上最强学习笔记---GridPanel(基础篇)
- AngularJS模块管理问题的非常规处理方法
- JS backgroundImage控制
- Spring动态多数据源配置实例Demo
- perl实现的两个文件对比并对数据进行筛选的脚本代码
- ThinkPHP的截取字符串函数无法显示省略号的解决方法
- 仅用50行Python代码实现一个简单的代理服务器
- 文件的读出 编辑 管理
- Java 中分形图的几种方法详解
- Java数据库编程中的技巧
- C# web应用程序不能访问app_code下类的原因以及解决方法
- mysql 教程 存储过程
- cmake ios终端下执行提示错误 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解决方案
- 拯救你的数据 通过日志恢复MSSQL数据
- js判断字符是否是汉字的两种方法小结
- JAVA使用commos-fileupload实现文件上传与下载实例解析
- 学习使用bootstrap基本控件(table、form、button)
- IIS Admin Service 服务因 2149647636 (0x80210514) 服务性错误而停止
- Java实现MD5消息摘要算法
- C#操作本地文件及保存文件到数据库的基本方法总结
其他
- ajax动态加载json数据
- 更改elementui table默认样式
- vant popup 从底部弹出时会将页面滑动到顶部
- springboot mysql断线重连
- python如何向空字符串中添加元素
- Pycharm中prettytable
- Python对数据的预处理有哪些标准化的方法
- golang tree 界面
- git如何撤回自己的commit
- webpack 热更新 和 页面刷新的区别
- python2.6安装pip
- Postman实现传List<xxxDto>集合
- win 安装pnpm
- pytest 断言插件
- pgadmin表中插入100万条数据
- element多选禁用样式
- canvas 签名固定位置
- vue 打包 vue.config.js 配置 pages
- goland安装破解
- gorm 无法连接时不报错