[英]C# passing dynamic method as parameter
所以我有一個動態對象,我想從中執行一個方法,但是我需要將該方法作為參數傳遞。 我沒有辦法做到這一點,並且想知道這里是否有人可以提供幫助。
就像是:
public static void RunMethod(methodInTheDynamicObject)
{
myDynamicObject.methodInTheDynamicObject();
}
在這種情況下,我通常傾向於定義一個委托:
public delegate void MyFunction(string p1, int p2);
public void Foo(MyFunction myFunction) {
myFunction("something", 2);
}
或者,您可以使用System.Reflection並傳入MethodInfo並按如下方式使用它:
public void Foo(MethodInfo methodInfo) {
methodInfo.Invoke(new object[] {"something", 2});
}
您可以在此處找到有關MethodInfo.Invoke的更多信息。 他們有一些例子。 但是,與會代表再次可能是更干凈的方式。
我相信您想傳遞一位代表。 請參閱此處的示例: http : //geekswithblogs.net/joycsharp/archive/2008/02/15/simple-c-delegate-sample.aspx
如果您需要一種針對運行時生成的方法的硬性方法,則可以嘗試: http : //msdn.microsoft.com/zh-cn/library/exczf7b9.aspx
我可能應該讓您知道我的動態對象是Iron-Python腳本。 反正我想通了。
public static void RunMethod(string script, string method, object[] param)
{
try
{
dynamic dynamicObj = Scripts[script];
var operations = ironPython.Operations;
operations.InvokeMember(dynamicObj, method, param);
}
catch { }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.