Какие различные способы звонка метода во время выполнения?
-
10-10-2019 - |
Вопрос
Мне нужно вызвать метод на объекте, но я не знаю названия метода до времени выполнения.
Какие методы доступны?
(например, 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.