簡體   English   中英

C#將動態方法作為參數傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM