System.Reflection.Module.ResolveMethod C# (CSharp) Method

ResolveMethod() public method

public ResolveMethod ( int metadataToken ) : MethodBase
metadataToken int
return MethodBase
        public MethodBase ResolveMethod(int metadataToken)
        {
            return ResolveMethod(metadataToken, null, null);
        }

Same methods

Module::ResolveMethod ( int metadataToken, Type genericTypeArguments, Type genericMethodArguments ) : MethodBase

Usage Example

Esempio n. 1
0
        public IMethodReference FindMethod(uint metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
        {
            // Lookup the type in the cache
            List <GenericReference <IMethodReference> > genericMethodReferences;

            if (_genericTokenMethodMap.TryGetValue(metadataToken, out genericMethodReferences))
            {
                foreach (GenericReference <IMethodReference> r in genericMethodReferences)
                {
                    if (CompareArrays(r.GenericArgs, genericMethodArguments))
                    {
                        return(r.Reference);
                    }
                }
            }

            IList <ITypeReference> genericArguments = new List <ITypeReference>();

            foreach (Type type in genericTypeArguments)
            {
                genericArguments.Add(AssemblyManager.FindType(type, type.GetGenericArguments()));
            }

            MethodBase methodBase = _netModule.ResolveMethod((int)metadataToken, genericTypeArguments, genericMethodArguments);

            IMethodDeclaration methodDeclaration;

            if (methodBase is ConstructorInfo)
            {
                methodDeclaration = new ConstructorDeclaration((ConstructorInfo)methodBase, this,
                                                               AssemblyManager.FindType(methodBase.DeclaringType, methodBase.DeclaringType.GetGenericArguments()));
            }
            else
            {
                methodDeclaration = new MethodDeclaration((MethodInfo)methodBase, this,
                                                          AssemblyManager.FindType(methodBase.DeclaringType, methodBase.DeclaringType.GetGenericArguments()));
            }

            if (genericMethodReferences == null)
            {
                genericMethodReferences = new List <GenericReference <IMethodReference> >();
                _genericTokenMethodMap.Add(metadataToken, genericMethodReferences);
            }

            genericMethodReferences.Add(new GenericReference <IMethodReference>(methodDeclaration, genericTypeArguments));

            return(methodDeclaration);
        }
All Usage Examples Of System.Reflection.Module::ResolveMethod