Mono.Cecil.MetadataImporter.ImportMethod C# (CSharp) Method

ImportMethod() public method

public ImportMethod ( System.Reflection method, ImportGenericContext context, ImportGenericKind import_kind ) : MethodReference
method System.Reflection
context ImportGenericContext
import_kind ImportGenericKind
return MethodReference
        public MethodReference ImportMethod(SR.MethodBase method, ImportGenericContext context, ImportGenericKind import_kind)
        {
            if (IsMethodSpecification (method) || ImportOpenGenericMethod (method, import_kind))
                return ImportMethodSpecification (method, context);

            var declaring_type = ImportType (method.DeclaringType, context);

            if (IsGenericInstance (method.DeclaringType))
                method = method.Module.ResolveMethod (method.MetadataToken);

            var reference = new MethodReference {
                Name = method.Name,
                HasThis = HasCallingConvention (method, SR.CallingConventions.HasThis),
                ExplicitThis = HasCallingConvention (method, SR.CallingConventions.ExplicitThis),
                DeclaringType = ImportType (method.DeclaringType, context, ImportGenericKind.Definition),
            };

            if (HasCallingConvention (method, SR.CallingConventions.VarArgs))
                reference.CallingConvention &= MethodCallingConvention.VarArg;

            if (method.IsGenericMethod)
                ImportGenericParameters (reference, method.GetGenericArguments ());

            context.Push (reference);
            try {
                var method_info = method as SR.MethodInfo;
                reference.ReturnType = method_info != null
                    ? ImportType (method_info.ReturnType, context)
                    : ImportType (typeof (void), default (ImportGenericContext));

                var parameters = method.GetParameters ();
                var reference_parameters = reference.Parameters;

                for (int i = 0; i < parameters.Length; i++)
                    reference_parameters.Add (
                        new ParameterDefinition (ImportType (parameters [i].ParameterType, context)));

                reference.DeclaringType = declaring_type;

                return reference;
            } finally {
                context.Pop ();
            }
        }

Same methods

MetadataImporter::ImportMethod ( MethodReference method, ImportGenericContext context ) : MethodReference

Usage Example

Exemplo n.º 1
0
        MethodReference Import(SR.MethodBase method, IGenericParameterProvider context)
        {
            CheckMethod(method);
            CheckContext(context, this);

            return(MetadataImporter.ImportMethod(method, (IGenericContext)context));
        }
All Usage Examples Of Mono.Cecil.MetadataImporter::ImportMethod