c#中通过反射获得类的静态变量的值
一个月没写博客了,虽然最近啥也没学会,但是还是强迫自己更新一篇好了。
namespace LALALA
{
class AAA
{
internal static readonly string aaa = "hello world";
internal AAA()
{
Console.WriteLine("constructor of AAA been called");
}
}
}
如果有个如上的类,我们想获得helloworld这个字符串,该怎么用反射实现呢?
网上有的实现是这样子的:
string hello = typeof(AAA).GetField("aaa", BindingFlags.Static|BindingFlags.NonPublic).GetValue(new AAA()) as string;
但这样会出发AAA的构造函数。因为获取的是类变量(static),而不是成员变量,因此其实可以如下不需要触发AAA的构造函数
string hello = typeof(AAA).GetField("aaa", BindingFlags.Static|BindingFlags.NonPublic).GetValue(null) as string;