Какие различные способы звонка метода во время выполнения?

StackOverflow https://stackoverflow.com/questions/4442079

Вопрос

Мне нужно вызвать метод на объекте, но я не знаю названия метода до времени выполнения.

Какие методы доступны?

(например, getmethod (). Вызвать (), делегаты, C # 4.0 динамический)

Спасибо!

Это было полезно?

Решение

C # 4.0 dynamic Функциональность будет самым простым способом сделать это. В очень реальном смысле, dynamic это «просто обертка» вокруг отражения. Это очень хорошо Whotper, хотя это, вероятно, ваш лучший вариант.

Другие способы, примерно на растущем уровне сложных:

  • Используя стороннюю библиотеку отражения. Не уверен, что там в эти дни.
  • Написание своего собственного кода отражения.
  • Используйте CODEDOM для создания кода, который вызывает метод, который вы хотите позвонить.
  • Emit Il это значительно то же самое, что сгенерированный кодовый код.
  • Создайте исходный код C #, который вы затем компилируете в сборку, которую вы можете позвонить, что, в свою очередь, вызывает нужный метод.

Последние три не для слабого сердца. Ваша лучшая ставка - использовать dynamic или напишите свой собственный код отражения. Если бы у меня было dynamic Три года назад, когда я писал код для чего-то подобного, я бы использовал это.

Другие советы

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

http://msdn.microsoft.com/en-us/library/f7ykdhsy%28vs.80%29.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top