Esempio n. 1
0
 /// <summary>
 /// Gets a named method on the type. This method only looks at methods defined
 /// in type's metadata. The <paramref name="signature"/> parameter can be null.
 /// If signature is not specified and there are multiple matches, the first one
 /// is returned. If substitution is not null, then substitution will be applied to
 /// possible target methods before signature comparison. Returns null if method not found.
 /// </summary>
 public virtual MethodDesc GetMethod(string name, MethodSignature signature, Instantiation substitution)
 {
     foreach (var method in GetMethods())
     {
         if (method.Name == name)
         {
             if (signature == null || signature.Equals(method.Signature.ApplySubstitution(substitution)))
             {
                 return(method);
             }
         }
     }
     return(null);
 }
Esempio n. 2
0
 // TODO: Substitutions, generics, modopts, ...
 public virtual MethodDesc GetMethod(string name, MethodSignature signature)
 {
     foreach (var method in GetMethods())
     {
         if (method.Name == name)
         {
             if (signature == null || signature.Equals(method.Signature))
             {
                 return(method);
             }
         }
     }
     return(null);
 }
Esempio n. 3
0
 /// <summary>
 /// Gets a named method on the type. This method only looks at methods defined
 /// in type's metadata. The <paramref name="signature"/> parameter can be null.
 /// If signature is not specified and there are multiple matches, the first one
 /// is returned. Returns null if method not found.
 /// </summary>
 // TODO: Substitutions, generics, modopts, ...
 public virtual MethodDesc GetMethod(string name, MethodSignature signature)
 {
     foreach (var method in GetMethods())
     {
         if (method.Name == name)
         {
             if (signature == null || signature.Equals(method.Signature))
                 return method;
         }
     }
     return null;
 }
Esempio n. 4
0
        public override MethodDesc GetMethod(string name, MethodSignature signature)
        {
            var metadataReader = this.MetadataReader;
            var stringComparer = metadataReader.StringComparer;

            foreach (var handle in _typeDefinition.GetMethods())
            {
                if (stringComparer.Equals(metadataReader.GetMethodDefinition(handle).Name, name))
                {
                    MethodDesc method = (MethodDesc)_module.GetObject(handle);
                    if (signature == null || signature.Equals(method.Signature))
                        return method;
                }
            }

            return null;
        }
Esempio n. 5
0
        public override MethodDesc GetMethod(string name, MethodSignature signature)
        {
            var metadataReader = this.MetadataReader;

            foreach (var handle in _typeDefinition.Methods)
            {
                if (metadataReader.GetMethod(handle).Name.StringEquals(name, metadataReader))
                {
                    MethodDesc method = (MethodDesc)_metadataUnit.GetMethod(handle, this);
                    if (signature == null || signature.Equals(method.Signature))
                        return method;
                }
            }

            return null;
        }