1
なぜこのようなコード: はのsayHello「の定義が含まれていません 'オブジェクト':C#dynamic + System.Reflection.Emit =混在しないでください。
未処理の例外: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
using System; using System.Reflection; using System.Reflection.Emit; class Program { static Type CreateDynamicType() { var typeBuilder = AppDomain.CurrentDomain .DefineDynamicAssembly( name: new AssemblyName("FooAssembly"), access: AssemblyBuilderAccess.Run) .DefineDynamicModule("FooModule") .DefineType("Foo", TypeAttributes.Class); typeBuilder .DefineDefaultConstructor(MethodAttributes.Public); var method = typeBuilder .DefineMethod("SayHello", MethodAttributes.Public); var il = method.GetILGenerator(); il.EmitWriteLine("Hello!"); il.Emit(OpCodes.Ret); return typeBuilder.CreateType(); } static void Main() { var type = CreateDynamicType(); dynamic instance = Activator.CreateInstance(type); instance.SayHello(); } }
が例外を生成します'
しかし、reflection API経由の呼び出しは完全に機能します。何か案は?
よろしくお願いします。 – ControlFlow