Microsoft.JScript.Class.GetExpandoIndexerSetter C# (CSharp) Method

GetExpandoIndexerSetter() private method

private GetExpandoIndexerSetter ( ) : MethodInfo
return System.Reflection.MethodInfo
      internal MethodInfo GetExpandoIndexerSetter(){
        if (this.setItem == null){
          TypeBuilder classwriter = this.classob.GetTypeBuilder();
          this.GetExpandoFieldGetter(classwriter);
          // create the setter
          this.setItem = classwriter.DefineMethod("set_Item", MethodAttributes.Public|MethodAttributes.SpecialName, Typeob.Void, new Type[2]{Typeob.String, Typeob.Object});
          ILGenerator il = this.setItem.GetILGenerator();
          il.Emit(OpCodes.Ldarg_0);
          il.Emit(OpCodes.Call, this.getHashTableMethod);
          il.Emit(OpCodes.Ldarg_2);
          il.Emit(OpCodes.Ldsfld, CompilerGlobals.missingField);
          Label endif = il.DefineLabel();
          il.Emit(OpCodes.Beq_S, endif);
          il.Emit(OpCodes.Ldarg_1);
          il.Emit(OpCodes.Ldarg_2);
          il.Emit(OpCodes.Call, CompilerGlobals.hashtableSetItem);
          il.Emit(OpCodes.Ret);
          il.MarkLabel(endif);
          il.Emit(OpCodes.Ldarg_1);
          il.Emit(OpCodes.Call, CompilerGlobals.hashtableRemove);
          il.Emit(OpCodes.Ret);
          this.expandoItemProp.SetSetMethod(this.setItem);
        }
        return this.setItem;
      }