我正在对一个内部有 2 个私有成员变量的类进行单元测试。我创建了一个继承自我正在测试的类的类。
起初我只是制作了我想访问的变量,protected
但我认为如果我可以将它们保持私有并使用反射来访问它们会很酷。我用谷歌搜索并找到了各种文章(& 在这里提出的问题(http://stackoverflow.com/questions/4097682/c-sharp-use-reflection-to-get-a-private-member-variable-from-a-derived -class)) 并且接受的答案不起作用。
链接的 SO 问题说:
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = GetType().GetField("_commandCollection", flags);
// Retrieve the value of the field, and cast as necessary
IDbCommand[] cc =(IDbCommand[])field.GetValue(this);
但是,没有GetField()
方法。我尝试了一种看起来相似的方法,GetRuntimeField()
但没有奏效。
我的代码(在继承类中)是:
public List<BaseData> RealAllData
{
get
{
// Use reflection to access the private variable
FieldInfo field = GetType().GetRuntimeField("mAllData");
return (List<BaseData>)field.GetValue(this);
}
}
如果有人知道为什么这不起作用,那么我将不胜感激。谢谢。