[Mono-bugs] [Bug 475962] exception thrown from CreateDelegate () when compiling Expression returning a delegate

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Feb 14 12:23:56 EST 2009


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

User amirshim at yahoo.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=475962#c3


Amir Shimoni <amirshim at yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amirshim at yahoo.com




--- Comment #3 from Amir Shimoni <amirshim at yahoo.com>  2009-02-14 10:23:54 MST ---
It might not be the same bug exactly (or not even a bug at all), but to make
the csc compiler version fail on mono (and not on MS.net), change the last line
to

t(null); // instead of t(p);

This creates a delegate with a null target, but works on MS.net.  But it fails
on mono with the exact same exception as the original version (with t(p)).

This leads to a discrepancy between Mono and MS.net.  MS.net allows you to
create and execute a delegate on a non-static method with a null target as long
as you don't access "this" inside the method. Mono doesn't even let you create
the delegate with a null target.  I don't think this is necessarily bad, but I
think the exception should be a little more specific.  Here's a sample that
still generates the same exception as above: (Is this a MS.net bug?)

using System;
namespace MonoBug
{
    class Program
    {
        public void testFunc() {}
        static void Main()
        {
            var mi = typeof (Program).GetMethod("testFunc");
            Action a = (Action) Delegate.CreateDelegate(
               typeof (Action), null, mi);
            a();
        }
    }
}

And here's the exception it throws on Mono.

Unhandled Exception: System.ArgumentException: method argument length mismatch
  at System.Delegate.CreateDelegate (System.Type type, System.Object
firstArgument, System.Reflection.MethodInfo method, Boolean throwOnBindFailure)
[0x00266] in /mnt/photos1/dist/monosvn/mcs/class/corlib/System/Delegate.cs:259
  at System.Delegate.CreateDelegate (System.Type type, System.Object
firstArgument, System.Reflection.MethodInfo method) [0x00000] in
/mnt/photos1/dist/monosvn/mcs/class/corlib/System/Delegate.cs:263
  at MonoBug.Program.Main () [0x00015] in /tmp/test1/test2.cs:12

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list