0

動的メソッドを構築している関数があります。この動的メソッドの一部として、生成時に既知のアクションを呼び出しています。最小限の再現可能な例として、次の C# コードを検討してください。

using System.Reflection.Emit;

static class Program {
  static Action MakeAction(Action action) {
    DynamicMethod method = new DynamicMethod("test", null, null);
    ILGenerator generator = method.GetILGenerator();
    generator.Emit(OpCodes.Call, action.Method);
    generator.Emit(OpCodes.Ret);
    return method.CreateDelegate<Action>();
  }

  static void Main() {
    MakeAction(() => Console.WriteLine("hello"))();
  }
}

これを実行すると、System.InvalidProgramException が発生します。これを行う正しい方法は何ですか?

4

0 に答える 0