一个月没写博客了,虽然最近啥也没学会,但是还是强迫自己更新一篇好了。

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;

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注