https://bugzilla.novell.com/show_bug.cgi?id=360784


           Summary: [Regression] Delegate.CreateDelegate does not support
                    private methods in base class
           Product: Mono: Class Libraries
           Version: SVN
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs@lists.ximian.com
        ReportedBy: [EMAIL PROTECTED]
         QAContact: mono-bugs@lists.ximian.com
          Found By: ---


The Delegate.CreateDelegate overloads that take a method name no longer support
private methods in base types of the specified target (type or object).

This is probably a result of our (my) fixes to Type.GetMethods, which now
behaves like MS.

The code in Delegate.CreateDelegate apparently relies on our broken
implementation of Type.GetMethods.

I'll add unit tests for this issue first - to discover the exact MS
implementation of the overloads - and then submit a patch for review.

To reproduce, compile and run the following code:

using System;
using System.Reflection;

class Program
{
  static void Main ()
  {
    Bar b = new Bar ();

    EventHandler handler = (EventHandler ) Delegate.CreateDelegate (
      typeof (EventHandler), b, "Page_Load");
    handler (b, new EventArgs ());
  }
}

class Foo
{
  void Page_Load (object sender, EventArgs e)
  {
  }
}

class Bar : Foo
{
}

Expected result:

Successful execution

Actual result:

Unhandled Exception: System.ArgumentException: Couldn't bind to method
'Page_Loa
d'.
  at System.Delegate.CreateDelegate (System.Type type, System.Object target,
Sys
tem.String method, Boolean ignoreCase, Boolean throwOnBindFailure) [0x00000]
  at System.Delegate.CreateDelegate (System.Type type, System.Object target,
Sys
tem.String method, Boolean ignoreCase) [0x00000]
  at System.Delegate.CreateDelegate (System.Type type, System.Object target,
Sys
tem.String method) [0x00000]
  at Program.Main () [0x00000]


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist  -  mono-bugs@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to