[Mono-dev] System.Type GetMethod problem.
Arek Waliszewski
arek at forcom.com.pl
Mon Aug 6 04:22:08 EDT 2007
There is something wrong with Type.GetMethod() implementation.
Look:
using System;
using System.Reflection;
namespace Test
{
class A
{
public virtual void f(int i1, int i2) {}
public virtual void f(int i1, int i2, bool b) {}
}
class B : A
{
public override void f(int i1, int i2, bool b) {}
}
static class Program
{
private const BindingFlags BINDING_FLAGS
= BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Instance | BindingFlags.Static
| BindingFlags.IgnoreCase;
[STAThread]
static void Main()
{
Type tB = typeof(B);
MethodInfo mi = tB.GetMethod("f", BINDING_FLAGS);
if (mi != null)
Console.WriteLine("Method was found!");
}
}
}
On Microsoft .NET this program raises
System.Reflection.AmbiguousMatchException, which is correct behavior IMHO.
On Mono GetMethod returns 'public override void f(int i1, int i2, bool
b)' from class B. It works as it was specified BindingFlags.DeclaredOnly
flag.
What do you think?
Regards
Arek
More information about the Mono-devel-list
mailing list