Доступ к закрытым методам класса в C#

В одной из предыдущих статей мы уже рассматривали доступ к закрытым полям и свойствам. В этой статье мы рассмотрим, как вызвать закрытый метод.

Также как и в предыдущем случае вызвать закрытый метод можно двумя способами. Из вложенного класса и с использованием рефлексии.

Использование вложенных классов

Закрытый метод можно вызвать во вложенном классе. Пример:

Использование рефлексии

Для доступа к закрытым методам используется класс MethodInfo. Рассмотрим вызов при помощи рефлексии закрытого метода из примера выше.

Обратите внимание на флаги BindingFlags.NonPublic (член класса private, internal или protected) и BindingFlags.Instance (член класса не является статическим). Эти флаги необходимо обязательно передавать в метод GetField и притом совместно. Иначе доступ к полю не будет установлен.

Также следует обратить внимание на то, что параметры передаются в вызываемый метод в виде массива типа object, который передаётся вторым параметром в метод Invoke класса MehodInfo. Если вызываемый метод не принимает параметров, то второй параметр метода Invoke можно опустить, так как он сам по себе не является обязательным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *