Средства разработки приложений


Управление книгами и страницами.


Позднее связывание подразумевает, что нам неизвестен тип объекта, с которым мы хотим работать, а это значит, что мы не можем применять непосредственно обращаться к его методам и полям, используя оператор ".". Поэтому для вызова метода, нам необходимо знать его название и список формальных параметров, которые он принимает. Для вызова метода в классе Type предусмотрен метод InvokeMember(). Поэтому нам достаточно получить ссылку на экземпляр класса Type, описывающий тип объекта, с которым мы устанавливаем позднее связывание, и вызвать метод InvokeMember()/ Я не буду останавливаться подробно на этом методе, он достаточно хорошо описан в технической документации. Отмечу только самое необходимое, с которым мы будем непосредственно работать.

Метод InvokeMember() перегружен, и имеет три модификации.

public object InvokeMember(string name, BindingFlags flags, Binder binder, object target, object[] args);

public object InvokeMember(string name, BindingFlags flags, Binder binder, object target, object[] args, CultureInfo info);

public abstract object InvokeMember(string name, BindingFlags flags, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo info, string[] namedParameters);

В нашей работе мы будем использовать только первую модификацию метода. В качестве первого параметра метод получает строковое название метода, поля, свойства того объекта, с которым мы устанавливаем связь. При этом в названии не должно быть пробелов или лишних символов, кроме того, этот параметр чувствителен к регистру.

Второй параметр принимает на вход флаги, характеризующие связывание. Нам понадобятся только следующие флаги:

  • BindingFlags.InvokeMethod - Найти метод, определить его точку входа, и выполнить передав ему массив фактических параметров.
  • BindingFlags.GetProperty - Установить свойство
  • BindingFlags.SetProperty - Получить значение свойства.

Третий параметр - binder - мы устанавливаем в null - он нам не нужен.

Через четвертый параметр - target - мы передаем ссылку на объект, к методу которого мы хотим обратиться.

Пятый параметр - args - это массив с параметрами, который принимает на вход вызываемый поздним связыванием метод, или массив, который содержит один элемент - значение свойство, которое мы устанавливаем.

Метод InvokeMember() возвращает результат выполнения метода или значение свойства.

Для управления книгами и страницами в первую очередь нужно получить ссылку на их коллекции.


Начало  Назад  Вперед