Csharp/C#教程:我可以使用VS2010 PrivateObject来访问静态类中的静态字段吗?分享


我可以使用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

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

精彩推荐