当前位置: 首页 > 编程笔记 >

利用反射获得类的public static/const成员的值实例

夹谷星纬
2023-03-14
本文向大家介绍利用反射获得类的public static/const成员的值实例,包括了利用反射获得类的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成员的值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 说我有一个具有一些成员变量的类,一个或多个是具有成员变量的另一个类。如何获得两个类中每个变量的值? 我可以通过以下方式获取变量:通过调用Foo对象的值,然后再次对其进行迭代以获取子类变量。 但是,如何在没有该类实例的情况下获取每个子类成员变量的值?我的平凡示例之所以有用,是因为该类的每个实例的变量都相同,因此我可以调用 我想如果能以某种方式从字段中获取对象的实例,那可能会起作用? 提前

  • 主要内容:结构体字段类型,获取成员反射信息任意值通过 reflect.TypeOf() 获得反射对象信息后,如果它的类型是结构体,可以通过反射值对象(reflect.Type)的 NumField() 和 Field() 方法获得结构体成员的详细信息。与成员获取相关的 reflect.Type 的方法如下表所示。 结构体成员访问的方法列表 方法 说明 Field(i int) StructField 根据索引,返回索引对应的结构体字段的信

  • 本文向大家介绍Java利用反射实现框架类的方法实例,包括了Java利用反射实现框架类的方法实例的使用技巧和注意事项,需要的朋友参考一下 框架类的简单实现 实现步骤: 1. 加载配置文件 2. 获取配置文件中定义的数据 3. 加载该类进内存 主要讲解第一步:加载配置文件 的相关知识。 Properties 是map接口的实现类,它有一个特有的功能:可以保存到流中或者从流中加载。本例中用到它的方法有:

  • 本文向大家介绍c++ 类中const成员变量的赋值方法,包括了c++ 类中const成员变量的赋值方法的使用技巧和注意事项,需要的朋友参考一下 在头文件的类的定义中定义了一个const成员变量c++ 规则: 1、类定义中不能进行初始化,因为头文件中类的定义只是一个声明,并没有分配真正空间,因此变量是不存在的,因此是不能赋值的。 2、const 定义的变量是不能赋值 这可如何是好,声明中不能赋值,声

  • 本文向大家介绍利用反射获取Java类中的静态变量名及变量值的简单实例,包括了利用反射获取Java类中的静态变量名及变量值的简单实例的使用技巧和注意事项,需要的朋友参考一下 JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了。 其中要查看的Java类是: 以上这篇利用反射获取Java类中的静态变量名及变量值的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望

  • 本文向大家介绍C#实现利用反射简化给类字段赋值的方法,包括了C#实现利用反射简化给类字段赋值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现利用反射简化给类字段赋值的方法。分享给大家供大家参考。具体分析如下: 说明:这个例子主要的思路是建立一个类和数据库查询语句的字段结构是一致的 然后利用反射,直接用数据字段名称进行拼凑,给类对象的字段进行赋值   1.类的定义 希望本文所述