Ejemplo n.º 1
0
        private void GenerateGetFieldInfoForDiscriminator()
        {
            MethodBuilder getFieldForDiscrMethod = m_ilEmitHelper.AddMethod(m_builder, GET_FIELD_FOR_DISCR_METHOD,
                                                                            new ParameterSpec[] {
                new ParameterSpec("discrVal",
                                  m_discrType,
                                  ParameterSpec.ParameterDirection.s_in)
            },
                                                                            new TypeContainer(typeof(FieldInfo)),
                                                                            MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.Static);
            ILGenerator gen = getFieldForDiscrMethod.GetILGenerator();
            GenerateGetFieldInfoForDiscAction action = new GenerateGetFieldInfoForDiscAction(this);
            Label endOfMethod = gen.DefineLabel();

            GenerateSwitchForDiscriminator(gen, action, endOfMethod);
            gen.MarkLabel(endOfMethod);
            gen.Emit(OpCodes.Ret);
        }
 private void GenerateGetFieldInfoForDiscriminator() {
     MethodBuilder getFieldForDiscrMethod = m_ilEmitHelper.AddMethod(m_builder, GET_FIELD_FOR_DISCR_METHOD,
                                                            new ParameterSpec[] { 
                                                                 new ParameterSpec("discrVal", 
                                                                                   m_discrType, 
                                                                                   ParameterSpec.ParameterDirection.s_in) 
                                                            },
                                                            new TypeContainer(typeof(FieldInfo)), 
                                                            MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.Static);
     ILGenerator gen = getFieldForDiscrMethod.GetILGenerator();            
     GenerateGetFieldInfoForDiscAction action = new GenerateGetFieldInfoForDiscAction(this);
     Label endOfMethod = gen.DefineLabel();            
     GenerateSwitchForDiscriminator(gen, action, endOfMethod);
     gen.MarkLabel(endOfMethod);
     gen.Emit(OpCodes.Ret);
 }