Reflecting over classes in .NET produces methods only differing by a modifier

Posted by mrjoltcola on Stack Overflow See other posts from Stack Overflow or by mrjoltcola
Published on 2010-04-17T20:17:54Z Indexed on 2010/04/17 20:23 UTC
Read the original article Hit count: 274

Filed under:
|
|

I'm a bit boggled by something, I hope the CLR gearheads can help. Apparently my gears aren't big enough.

I have a reflector utility that generates assembly stubs for Cola for .NET, and I find classes have methods that only differ by a modifier, such as virtual. Example below, from Oracle.DataAccess.dll, method GetType():

class OracleTypeException : System.SystemException {
    virtual  string ToString ();
    virtual  System.Exception GetBaseException ();
    virtual  void set_Source (string value);
    virtual  void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
    virtual  System.Type GetType (); // here
    virtual  bool Equals (object obj);
    virtual  int32 GetHashCode ();
    System.Type GetType (); // and here
}

What is this?

I have not been able to reproduce this with C# and it causes trouble for Cola as it thinks GetType() is a redefinition, since the signature is identical.

My method reflector starts like this:

static void DisplayMethod(MethodInfo m)
{
    if (
       // Filter out things Cola cannot yet import, like generics, pointers, etc.
       m.IsGenericMethodDefinition ||
       m.ContainsGenericParameters ||
       m.ReturnType.IsGenericType ||
       !m.ReturnType.IsPublic ||
       m.ReturnType.IsArray || m.ReturnType.IsPointer || m.ReturnType.IsByRef || m.ReturnType.IsPointer
       || m.ReturnType.IsMarshalByRef
       || m.ReturnType.IsImport
       )
   return;

   // generate stub signature
   // [snipped]
}

© Stack Overflow or respective owner

Related posts about .NET

Related posts about clr