IronRuby.Tests.Tests.CreateParamsArrayMethod C# (CSharp) Method

CreateParamsArrayMethod() static private method

static private CreateParamsArrayMethod ( string name, Type paramTypes, int paramsArrayIndex, int returnValue ) : OverloadInfo
name string
paramTypes Type
paramsArrayIndex int
returnValue int
return OverloadInfo
        internal static OverloadInfo/*!*/ CreateParamsArrayMethod(string/*!*/ name, Type/*!*/[]/*!*/ paramTypes, int paramsArrayIndex, int returnValue) {
            var tb = Snippets.Shared.DefineType("<T>", typeof(object), false, false).TypeBuilder;
            var mb = tb.DefineMethod(name, CompilerHelpers.PublicStatic, typeof(KeyValuePair<int, Array>), paramTypes);
            var pb = mb.DefineParameter(1 + paramsArrayIndex, ParameterAttributes.None, "ps");
            pb.SetCustomAttribute(new CustomAttributeBuilder(typeof(ParamArrayAttribute).GetConstructor(Type.EmptyTypes), ArrayUtils.EmptyObjects));

            var il = mb.GetILGenerator();
            il.Emit(OpCodes.Ldc_I4, returnValue);
            il.Emit(OpCodes.Ldarg, paramsArrayIndex);
            il.Emit(OpCodes.Newobj, typeof(KeyValuePair<int, Array>).GetConstructor(new[] { typeof(int), typeof(Array) }));
            il.Emit(OpCodes.Ret);
            return new ReflectionOverloadInfo(tb.CreateType().GetMethod(name, BindingFlags.Public | BindingFlags.Static));
        }
Tests