我可以使用VS2010 PrivateObject来访问静态类中的静态字段吗?
是否可以使用VS2010unit testing类PrivateObject访问静态类中的私有静态字段?
假设我有以下课程:
public static class foo { private static bar; }
我可以使用PrivateObject创建foo的副本,然后获取bar字段吗?
可以使用reflection来检索属性值。 这将需要使用Type.GetField方法(String,BindingFlags)和FieldInfo.GetValue方法
string propertyName = "bar"; FieldInfo fieldInfo = typeof(foo).GetField(propertyName, BindingFlags.NonPublic | BindingFlags.Static); object fieldValue = fieldInfo.GetValue(null);
PrivateType类类似于PrivateObject,用于调用私有静态成员。 可以使用重载的GetStaticFieldOrProperty方法。 https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.privatetype(v=VS.100).aspx
Deepun的答案非常有用。 我想添加一个具体的例子来帮助那些以这种方式来的人。
具有私有静态成员的类。
public class foo { private static int bar; }
代码获得价值。
PrivateType pt = new PrivateType(typeof(foo)); int bar = (int)pt.GetStaticFieldOrProperty("bar");
代码改变价值
PrivateType pt = new PrivateType(typeof(foo)); pt.SetStaticFieldOrProperty("bar", 10);
无论是否为静态类,这都可以工作。
上述就是C#学习教程:我可以使用VS2010 PrivateObject来访问静态类中的静态字段吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954219.html