MethodInfo
ExpandoObject で動的に定義されたメソッドについては何も取得しません。
動的に定義されたメソッドは、動的に定義されたプロパティと同じですが、デリゲート型になっているだけです。
ただし、このデリゲート型には、利用できるMethod
type という名前のプロパティが含まれています。MethodInfo
object ExecuteFunction(IDictionary<string, object> obj, string name,
params object[] parameters)
{
object property;
if(!obj.TryGetValue(name, out property))
return null;
var del = property as Delegate;
if(del == null)
return null;
var methodInfo = del.Method;
// do with methodInfo what you need to do to invoke it.
// This should be in its own method so you can call it from both versions of your
// ExecuteFunction method.
}
最初のパラメータの型はIDictionary<string, object>
. ExpandoObject
はこのインターフェイスを実装しており、 の他の機能は必要ありませんExpandoObject
。そのため、パラメータは、機能が必要な実装されたインターフェイスの型になります。