[英]Execute private method in C# interactive window
是否存在任何escamotage從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]);
您需要根據方法的位置更改綁定標志和Invoke方法參數。 ( BindingFlags.Instance
vs BindingFlags.Static
等)
替代 :
如果使用實例對象(不是靜態的),那里存在幾個使用dynamic
魔法來暴露私有成員的實現。 如果您進行谷歌搜索,您可以找到這個的實現(或自己寫一個)。
這將允許您編寫如下代碼:
(new PrivateExposerObject(myClass)).SayHello();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.