在 C# 交互窗口中执行私有方法



是否存在从 C# 交互窗口执行私有方法的托管

?也就是说,假设我有一个简单的类,如下所示:

public class MyClass
{
private static string SayHello()
{
return "Hello";
}
public static string SayBye()
{
return "Bye";
}
}

在Visual studio中,我可以单击"初始化与项目的交互",然后我可以访问并调用SayBye()方法,如以下示例所示:

> MyClass.SayBye()
"Bye"

有什么方法也可以访问SayHello()私人方法吗?这在开发过程中用于测试目的非常有用。

编写> MyClass.SayHello()实际上可能在交互式窗口中工作,你试过吗?

如果没有,您可以按照与尝试通过普通代码执行它相同的方式执行SayHello- 反射。您可以在交互式提示中编写如下所示的内容:

typeof(MyClass)
.GetMethod("SayHello", BindingFlags.NonPublic | BindingFlags.Static)
.Invoke(null, new object[0]);

需要根据方法所在的位置更改绑定标志和调用方法参数。(BindingFlags.InstanceBindingFlags.Static等)

替代

如果使用实例对象(非静态),则存在几种实现,它们使用dynamic的魔力来公开私有成员。如果你做一个谷歌搜索,你可以找到一个实现(或自己写一个)。

这将允许您编写如下代码:

(new PrivateExposerObject(myClass)).SayHello();

相关内容

  • 没有找到相关文章

最新更新