C # GetMethod против GetRuntimeMethod - PullRequest
0 голосов
/ 06 июля 2019

Я использую GetRuntimeMethod, чтобы получить метод из типа.Все отлично работает, но я заметил, что есть GetMethod.В чем разница между ними?

this.target.GetType().GetRuntimeMethod(
    "MethodName",
    new System.Type[0]
)?.Invoke(targetObject, null);

Из названий я могу только догадываться, что GetRuntimeMethod работает во время работы программы.И GetMethod работает во время компиляции программы?

Есть ли преимущества использования одного вместо другого?(Этот последний вопрос может быть выведен из ответа на вопрос, в чем разница между ними, конечно)

1 Ответ

0 голосов
/ 19 июля 2019

GetMethod работает на System.Type, абстрактный базовый класс для RuntimeType. GetRuntimeMethod вызывает GetMethod после проверки типа на самом деле RuntimeType (а не (возможно, определяемый пользователем) дочерний элемент Type), поэтому он медленнее, чем GetMethod. GetRuntimeMethod выдает исключение, если не передан класс, производный от RuntimeType.

Из документации для Type:

Type - абстрактный базовый класс, который допускает несколько реализаций. Система всегда будет предоставлять производный класс RuntimeType. В отражение, все классы, начинающиеся со слова Runtime созданы только один раз для каждого объекта в системе и поддержки операций сравнения.

Также эта статья содержит дополнительную информацию о расширении Type и, когда вам может потребоваться RuntimeType, в частности.

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