gpt4 book ai didi

C# GetMethod 与 GetRuntimeMethod

转载 作者:行者123 更新时间:2023-12-03 08:54:01 26 4
gpt4 key购买 nike

我正在使用GetRuntimeMethod来获取类型不正确的方法。一切正常,但我注意到有一个GetMethod。两者有什么区别?

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

从名称中我只能猜测 GetRuntimeMethod 在程序运行时起作用。 GetMethod 在程序编译期间起作用?

使用其中一种替代另一种有什么优势吗? (这最后一个问题当然可以从答案中推导出两者有什么区别)

最佳答案

GetMethod 适用于 System.Type,它是 RuntimeType 的抽象基类。 GetRuntimeMethod 在验证类型实际上是 RuntimeType(而不是(可能是用户定义的)Type 的子级)后调用 GetMethod >),所以它比 GetMethod 慢。如果未传递从 RuntimeType 派生的类,GetRuntimeMethod 会引发异常。

来自documentation for Type :

Type is an abstract base class that allows multiple implementations. The system will always provide the derived class RuntimeType. In reflection, all classes beginning with the word Runtime are created only once per object in the system and support comparison operations.

还有this article有关扩展 Type 以及何时可能专门需要 RuntimeType 的更多详细信息。

关于C# GetMethod 与 GetRuntimeMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com