当前位置: 首页>>代码示例>>C#>>正文


C# MethodType.parameterCount方法代码示例

本文整理汇总了C#中MethodType.parameterCount方法的典型用法代码示例。如果您正苦于以下问题:C# MethodType.parameterCount方法的具体用法?C# MethodType.parameterCount怎么用?C# MethodType.parameterCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MethodType的用法示例。


在下文中一共展示了MethodType.parameterCount方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: EmitInvokeBasic

 private void EmitInvokeBasic(MethodType mt)
 {
     TypeWrapper[] args = new TypeWrapper[mt.parameterCount()];
     for (int i = 0; i < args.Length; i++)
     {
         args[i] = TypeWrapper.FromClass(mt.parameterType(i));
         args[i].Finish();
     }
     TypeWrapper ret = TypeWrapper.FromClass(mt.returnType());
     ret.Finish();
     Compiler.MethodHandleMethodWrapper.EmitInvokeBasic(ilgen, args, ret, false);
 }
开发者ID:JokerMisfits,项目名称:linux-packaging-mono,代码行数:12,代码来源:NativeInvokerBytecodeGenerator.cs

示例2: NativeInvokerBytecodeGenerator

    private NativeInvokerBytecodeGenerator(LambdaForm lambdaForm, MethodType invokerType)
    {
        if (invokerType != invokerType.basicType())
        {
            throw new BailoutException(Bailout.NotBasicType, invokerType);
        }
        this.lambdaForm = lambdaForm;
        this.invokerType = invokerType;
        this.delegateType = MethodHandleUtil.GetMemberWrapperDelegateType(invokerType);
        MethodInfo mi = MethodHandleUtil.GetDelegateInvokeMethod(delegateType);
        Type[] paramTypes = MethodHandleUtil.GetParameterTypes(typeof(object[]), mi);
        // HACK the code we generate is not verifiable (known issue: locals aren't typed correctly), so we stick the DynamicMethod into mscorlib (a security critical assembly)
        this.dm = new DynamicMethod(lambdaForm.debugName, mi.ReturnType, paramTypes, typeof(object).Module, true);
        this.ilgen = CodeEmitter.Create(this.dm);
        if (invokerType.parameterCount() > MethodHandleUtil.MaxArity)
        {
            this.packedArgType = paramTypes[paramTypes.Length - 1];
            this.packedArgPos = paramTypes.Length - 1;
        }
        else
        {
            this.packedArgPos = Int32.MaxValue;
        }

        locals = new CodeEmitterLocal[lambdaForm.names.Length];
        for (int i = lambdaForm._arity(); i < lambdaForm.names.Length; i++)
        {
            Name name = lambdaForm.names[i];
            if (name.index() != i)
            {
                throw new BailoutException(Bailout.PreconditionViolated, "name.index() != i");
            }
            switch (name.typeChar())
            {
                case 'L':
                    locals[i] = ilgen.DeclareLocal(Types.Object);
                    break;
                case 'I':
                    locals[i] = ilgen.DeclareLocal(Types.Int32);
                    break;
                case 'J':
                    locals[i] = ilgen.DeclareLocal(Types.Int64);
                    break;
                case 'F':
                    locals[i] = ilgen.DeclareLocal(Types.Single);
                    break;
                case 'D':
                    locals[i] = ilgen.DeclareLocal(Types.Double);
                    break;
                case 'V':
                    break;
                default:
                    throw new BailoutException(Bailout.PreconditionViolated, "Unsupported typeChar(): " + name.typeChar());
            }
        }
    }
开发者ID:JokerMisfits,项目名称:linux-packaging-mono,代码行数:56,代码来源:NativeInvokerBytecodeGenerator.cs


注:本文中的MethodType.parameterCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。