2012-01-05 16 views
0

私は動的オブジェクトを持っているので、そこからメソッドを実行したいが、メソッドをパラメータとして渡す必要がある。私はこれを行う方法が見つからず、ここの誰かが助けてくれるのだろうかと思っていました。私はあなたがデリゲートを渡したいと思っていると信じてパラメータとしてC#を渡す動的メソッド

public static void RunMethod(methodInTheDynamicObject) 
{ 
    myDynamicObject.methodInTheDynamicObject(); 
} 
+1

myDynamicはC#4の動的キーワード、動的には動的にコンパイルされているようですか? –

+0

動的キーワード – Axis

+0

どのようにバックアップされていますか?現在のフォームでそのプロパティを調べる能力はありますか? –

答えて

-1

おそらく、私の動的オブジェクトが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 { } 
} 
3

この場合、私の好みは、デリゲートを定義するには、通常は次のとおりです。

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の詳細については、を参照してください。。彼らにはいくつかの例があります。しかし、再び、代議員はおそらくよりクリーンな方法です。

関連する問題