Can i use VS2010 PrivateObject to access a static field inside a static class?
是否可以使用VS2010单元测试类PrivateObject访问静态类中的私有静态字段?
假设我有以下课程:
1 2 3 4 | public static class foo { private static bar; } |
我可以使用PrivateObject创建foo的副本,然后获取bar字段吗?
PrivateType类类似于PrivateObject,用于调用私有静态成员。 可以使用重载的GetStaticFieldOrProperty方法。
http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.privatetype(v=VS.100).aspx
Deepun的答案非常有用。 我想添加一个具体的例子来帮助那些来这种方式的人。
具有私有静态成员的类。
1 2 3 4 | public class foo { private static int bar; } |
代码获得价值。
代码改变价值
无论是否为静态类,这都可以工作。
可以使用反射来检索属性值。 这将需要使用Type.GetField方法(String,BindingFlags)和FieldInfo.GetValue方法
1 2 3 | string propertyName ="bar"; FieldInfo fieldInfo = typeof(foo).GetField(propertyName, BindingFlags.NonPublic | BindingFlags.Static); object fieldValue = fieldInfo.GetValue(null); |