服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 利用反射获得类的public static/const成员的值实例

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

2021-04-25 14:11C语言教程网 C/C++

下面小编就为大家带来一篇利用反射获得类的public static/const成员的值实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

首先,我们定义一个类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
 }
 }

写一个测试函数:

?
1
2
3
4
5
6
7
8
9
/// <summary>
/// 获取类的public static/const成员的值
/// </summary>
/// <typeparam name="T"></typeparam>
public void TestGetValue<T>()
{
 var tableName = typeof(T).GetField("TableName").GetValue(null);
 Console.WriteLine(tableName);
}

调用测试接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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成员的值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

延伸 · 阅读

精彩推荐