Каковы различные способы вызова метода во время выполнения? - PullRequest
0 голосов
/ 14 декабря 2010

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

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

(например, GetMethod() .Invoke (), делегаты, c # 4.0 динамический)

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

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

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

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

Последние три не для слабонервных.Лучше всего использовать dynamic или написать собственный код Reflection.Если бы у меня было dynamic три года назад, когда я писал код для чего-то подобного, я бы использовал его.

0 голосов
/ 14 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...