Emit() 공개 메소드

public Emit ( ) : AstNode
리턴 AstNode
예제 #1
0
        private void EmitEventRegistration(LocalBuilder localbuilder)
        {
            FieldInfo fieldInfo                = Target.GetField(Member.Name, BindingFlags.NonPublic | BindingFlags.Static);
            var       dynamicMethod            = new DynamicMethod("EmitEventRegistration", TypeSystem.Void, Type.EmptyTypes, true);
            var       dynamicMethodILGenerator = dynamicMethod.GetILGenerator();
            var       emitter = new FieldReferenceReflectionEmitter(Node, Target, fieldInfo, ILGenerator, InstructionsIndexer, Visitor, Locals);

            _assignorExpression.AcceptVisitor(Visitor, dynamicMethodILGenerator);
            dynamicMethodILGenerator.Emit(OpCodes.Stsfld, fieldInfo);
            dynamicMethodILGenerator.Emit(OpCodes.Ret);
            dynamicMethod.CreateDelegate(typeof(Action)).DynamicInvoke();
            emitter.Emit();
        }
        private void EmitEventRegistration(LocalBuilder localbuilder) {
            FieldInfo fieldInfo = Target.GetField(Member.Name, BindingFlags.NonPublic | BindingFlags.Static);
            var dynamicMethod = new DynamicMethod("EmitEventRegistration", TypeSystem.Void, Type.EmptyTypes, true);
            var dynamicMethodILGenerator = dynamicMethod.GetILGenerator();
            var emitter = new FieldReferenceReflectionEmitter(Node, Target, fieldInfo, ILGenerator, InstructionsIndexer, Visitor, Locals);

            _assignorExpression.AcceptVisitor(Visitor, dynamicMethodILGenerator);
            dynamicMethodILGenerator.Emit(OpCodes.Stsfld, fieldInfo);
            dynamicMethodILGenerator.Emit(OpCodes.Ret);
            dynamicMethod.CreateDelegate(typeof(Action)).DynamicInvoke();
            emitter.Emit();
        }