Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#通过从另一个类反射获取私有方法并调用它_C#_.net_Reflection_Nunit - Fatal编程技术网

C#通过从另一个类反射获取私有方法并调用它

C#通过从另一个类反射获取私有方法并调用它,c#,.net,reflection,nunit,C#,.net,Reflection,Nunit,在Java中,您可以调用如下私有方法: Method m = obj.getClass().getDeclaredMethod("foo", null); m.setAccessible(true); m.invoke("bar"); C#中的等价物是什么?我需要在单元测试中调用一个私有方法 如果您有权访问MSTest框架,则可以创建PrivateObject实例,这是一个包装器,可用于访问对象实例的私有方法和字段 可以使用PrivateObject.Invoke()方法从相关对象调用私有

在Java中,您可以调用如下私有方法:

Method m = obj.getClass().getDeclaredMethod("foo", null); 
m.setAccessible(true);
m.invoke("bar");

C#中的等价物是什么?我需要在单元测试中调用一个私有方法

如果您有权访问MSTest框架,则可以创建PrivateObject实例,这是一个包装器,可用于访问对象实例的私有方法和字段

可以使用PrivateObject.Invoke()方法从相关对象调用私有方法


作为旁注,有时必须访问私有方法才能进行单元测试被认为是不好的做法。我知道这并不总是可能的,但是你也应该考虑重新评估你的代码体系结构,以使它更适合于不需要这种解决方案的友好测试。

<代码>我需要在单元测试中调用一个私有方法——你应该阅读一些关于这个问题的答案:检查你的标签,您确实需要检查@bradbury9。问题是OP想要调用私有方法,而不是访问另一个程序集中的内部类-(@bradbury9我正在研究这个问题的前两个答案。Thanks@RuiJarimba是的,调用私有方法进行测试,看起来像是XY问题,应该使用内部方法,然后就没有必要进行反思。另一种选择是使内部方法可调用,这可能是一种更简单的方法