{
AssemblyName assemblyName = new AssemblyName("DynamicAssembly");
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicType", TypeAttributes.Public);
MethodBuilder methodBuilder = typeBuilder.DefineMethod(name, MethodAttributes.Public | MethodAttributes.Static, typeof(void), null);
var il = methodBuilder.GetILGenerator();
il.Emit(OpCodes.Ldc_I4, 100);
il.Emit(OpCodes.Stsfld, typeof(main).GetField("Val", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static ));
il.Emit(OpCodes.Ret);
}
private static int Val;
Уже n-ый раз сталкиваюсь с этой проблемой. Почему, ловлю
Unhandled exception. System.FieldAccessException: Attempt by method 'DynamicType.a()' to access field
Как получить поле?
Если делать через DynamicMethod то все ок, предположу что дело в сборке. а как к той сборке добавить свою.