示例#1
0
            public MemberInfo VisitField(EmitField field, TypeBuilder parent)
            {
                var fieldBuilder = parent.DefineField(field.Name, field.FieldType,
                                                      ReflectionFieldAttributes.ToFieldAttributes(field.Visibility, field.IsStatic, field.IsReadOnly, false));

                return(fieldBuilder);
            }
示例#2
0
        public IEmitterType EmitMapMethod(IEmitterType sourceMemeber, IEmitterType targetMember)
        {
            Type         mapperType   = typeof(Mapper);
            MethodInfo   mapMethod    = mapperType.GetMethod(Mapper.MapMethodName, BindingFlags.Instance | BindingFlags.Public);
            FieldInfo    mappersField = mapperType.GetField(Mapper.MappersFieldName, BindingFlags.Instance | BindingFlags.NonPublic);
            IEmitterType mappers      = EmitField.Load(EmitThis.Load(mapperType), mappersField);
            IEmitterType mapper       = EmitArray.Load(mappers, Id);
            IEmitterType result       = EmitMethod.Call(mapMethod, mapper, sourceMemeber, targetMember);

            return(result);
        }
        public IEmitterType EmitMapMethod(IEmitterType sourceMember, IEmitterType targetMember)
        {
            var mapperType   = typeof(Mapper);
            var mapMethod    = mapperType.GetMethod(Mapper.MAP_METHOD_NAME, BindingFlags.Instance | BindingFlags.Public);
            var mappersField = mapperType.GetField(Mapper.MAPPERS_FIELD_NAME, BindingFlags.Instance | BindingFlags.NonPublic);
            var mappers      = EmitField.Load(EmitThis.Load(mapperType), mappersField);
            var mapper       = EmitArray.Load(mappers, Id);
            var result       = EmitMethod.Call(mapMethod, mapper, sourceMember, targetMember);

            return(result);
        }
示例#4
0
 private static IEmitterType StoreFiled(FieldInfo field, IEmitterType targetObject, IEmitterType value)
 {
     return(EmitField.Store(field, targetObject, value));
 }
示例#5
0
 private IEmitterType LoadField(IEmitterType source, FieldInfo field)
 {
     return(EmitField.Load(source, field));
 }
示例#6
0
 public EmitInstruction Emit(IEmitOpCodeField opCode, EmitField field)
 {
     var instruction = new EmitInstruction(opCode, field);
     AddInstruction(instruction);
     return instruction;
 }