我对这个问题进行了很多搜索,但没有得到任何与我正在寻找的问题相同的问题,最终提出问题。
我使用微软假货来测试下面的C#代码。
我遇到了以下类测试的情况
internal static class IntStaticClass
{
//some code
private class PvtClass
{
public string Create(Obj1 o1, Obj2 o2)
{
//some code
}
}
}
现在我想测试create方法。
但是,PrivateObject或PrivateType无法找到typeof(MyPrivateClass)
请帮助我如何创建PvtClass的对象并调用create to test方法。
提前致谢。
答案 0 :(得分:3)
您可以通过Assembly.GetType()
方法获取外部类的引用,然后可以通过Type.GetNestedTypes(BindingFlags.NonPublic)
获得对程序集的引用的最不痛苦的方法是typeof(
该程序集).Assembly
中的一些公共类。
答案 1 :(得分:2)
非常感谢约书亚。终于解决了这个问题。欢呼声。
我写了下面的代码来创建内部私有类的实例&执行它的方法。
var type = typeof(IntStaticClass);
var types = type.GetNestedTypes(BindingFlags.NonPublic);
MethodInfo methodInfo = types[0].GetMethod("Create");
object classInstance = System.Activator.CreateInstance(types[0], null);
object[] parametersArray = new object[2] { new Obj1(), new Obj2() };
var result = methodInfo.Invoke(classInstance, parametersArray);
现在可以测试方法了。欢呼声。