Вызов методов с параметрами

Вызов методов с параметрами

Чтобы показать пример динамического вызова метода, имеющего параметры, предположим, что тип MiniVan определяет метод, который называется TellChildToBeQuiet().

// Усмирение вопящих…

public void TellChildToBeQuiet(string kidName, int shameIntensity) {

 for (int i = 0; i ‹ shameIntensity; i++)

  MessageBox.Show("Потише, {0}!!", kidName);

}

Метод TellChildToBeQuiet() (приказать ребенку успокоиться) имеет два параметра: строковое представление имени ребенка и целое число, отражающее степень вашего раздражения. При использовании динамического связывания параметры упаковываются в массив объектов System.Object. Для вызова этого нового метода добавьте в свой метод Main() следующий программный код.

// Динамический вызов метода с параметрами.

object[] paramArray = new object[2];

paramArray[0] = "Фред"; // Имя ребенка.

paramArray[1] = 4; // Степень досады.

mi = miniVan.GetMethod("TellChildToBeQuiet");

mi.Invoke(obj, paramArray);

Выполнив эту программу, вы сможете увидеть четыре блока сообщений, отражающих намерение пристыдить юного Фреда. Надеюсь, что к этому моменту нашего обсуждения вы уже можете видеть взаимосвязь между отображением, динамической загрузкой и динамическим связыванием. Для вас еще может оставаться неясным ответ на вопрос, когда следует использовать указанный подход в приложениях. Завершающий раздел этой главы должен пролить на это свет, но пока что следующей темой нашего рассмотрения будет исследование роли атрибутов .NET.

Исходный код. Проект LateBinding размещен в подкаталоге, соответствующем главе 12.