Action.Methodが使用できないWinRTのアクションからメソッド名を取得しようとしています。これまでのところ私はこれを持っています:
public class Test2
{
public static Action<int> TestDelegate { get; set; }
private static string GetMethodName(Expression<Action<int>> e)
{
Debug.WriteLine("e.Body.NodeType is {0}", e.Body.NodeType);
MethodCallExpression mce = e.Body as MethodCallExpression;
if (mce != null)
{
return mce.Method.Name;
}
return "ERROR";
}
public static void PrintInt(int x)
{
Debug.WriteLine("int {0}", x);
}
public static void TestGetMethodName()
{
TestDelegate = PrintInt;
Debug.WriteLine("PrintInt method name is {0}", GetMethodName(x => PrintInt(x)));
Debug.WriteLine("TestDelegate method name is {0}", GetMethodName(x => TestDelegate(x)));
}
}
TestGetMethodName()を呼び出すと、次の出力が得られます。
e.Body.NodeType is Call
PrintInt method name is PrintInt
e.Body.NodeType is Invoke
TestDelegate method name is ERROR
目標は、TestDelegateに割り当てられているメソッドの名前を取得することです。「GetMethodName(x => PrintInt(x))」呼び出しは、私が少なくとも部分的に正しく実行していることを証明するためだけにあります。「TestDelegateメソッド名はPrintIntです」とどのように通知できますか?