Вызов private метода по его имени.
Вызывать методы класса можно также по имени и даже private методы.
MethodInfo mi =
typeof(...).GetMethod(...,.BindingFlags.NonPublic | BindingFlags.Instance );
mi.Invoke(
...);
Исходный код примера: FindMethod.zip
using System;
using System.Reflection;
namespace FindPrivateMethod
{
class Test
{
private Test ()
{
}
/// <summary>
/// Метод котрорый хотим вызвать
/// </summary>
/// <param name="name"></param>
private void PrivateShowName(string name)
{
Console.WriteLine("PrivateShowName: "+name);
}
static void Main()
{
//
// Создаем экземпляр объекта
//
Test t = new Test ();
//
// Получаем private метод, который хотим вызвать
//
MethodInfo mi = typeof(Test).GetMethod("PrivateShowName",
System.Reflection.BindingFlags.NonPublic
|System.Reflection.BindingFlags.Instance );
//
// Вызов с параметром
//
mi.Invoke(t, new object[]{"Test string...."});
Console.Read();
}
}
}