Рефлексия получение заранее заданных методов
Господа, подскажите, пожалуйста, по коду.
using System;
using System.Reflection;
class a
{
public void K(int x)
{
Console.WriteLine(x);
}
public int K(int x, int y)
{
return x + y;
}
public void V(string s)
{
Console.WriteLine(s);
}
}
class b
{
static void Main()
{
MethodInfo[] Mi = typeof(a).GetMethods(BindingFlags.DeclaredOnly);
foreach (MethodInfo m in Mi)
{
ParameterInfo[] Pi = m.GetParameters();
if (Pi.Length == 1 && Pi[0].ParameterType.Name == typeof(int).Name)
{
object[] o = new object[1] { 4 };
m.Invoke(new a(), o);
}
if (Pi.Length == 2 && Pi[1].ParameterType.Name == typeof(int).Name)
{
object[] o = new object[2] { 7, 19 };
m.Invoke(new a(), o);
}
if (Pi[0].ParameterType.Name == typeof(string).Name)
{
object[] o = new object[1] { "Colbasa" };
m.Invoke(new a(), o);
}
}
}
}
Почему typeof(a).GetMethods(BindingFlags.DeclaredOnly);
возвращает пустое значение?
Но при этом если typeof(a).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance);
, тогда все ок. Ведь, как мне кажется, наоборот, первый вариант более общий.
Спасибо.
Источник: Stack Overflow на русском