Reflection, вызов метода по имени

 

Вызов 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();

            }

      }

}


 

 

 
27.11.2008

Отзывы и комментарии

 


 
Тема
Ваше имя
Почтовый адрес
Текст сообщения
Ключ защиты:
Защита от спама
 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce
 
01.08  Task Context
01.08  XLSX в Mono