PrivateObject类的GetField()方法可以访问C#4.0中的私有const字符串吗?

gsi*_*nni 4 c# unit-testing visual-studio-2010

我正在编写一个单元测试来访问隔离数据存储中的文件.文件名存储在类中的私有const字符串中,因为我不在整个应用程序中的任何其他位置使用它.

但是,当我运行单元测试时,当我调用PrivateObject类实例的GetField("fieldName")方法时,我得到一个"未找到字段"错误.

string historyFileName = (string)history.GetField("ISOLATED_HISTORY_FILE");
Run Code Online (Sandbox Code Playgroud)

Ali*_*tad 5

使用可以传递BindingFlags和通过的过载BindingFlags.NonPublic | BindingFlags.Instance.

看看这里.


UPDATE

我以为你有一个领域.Const在编译时被文字替换.改变static readonly并通过BindingFlags.NonPublic | BindingFlags.Static.

如果您无法更改源,那么就没有办法了