|
|
1
2
好吧,如果你确定你的主要问题是MethodInfo。援引
将该表达式编译为
将该操作缓存在CallInfo类实例中。
|
|
|
2
1
通常,当您使用反射调用方法时,您会调用MethodInfo。援引不幸的是,这证明相当缓慢。如果在编译时知道方法的签名,可以使用delegate将方法转换为具有该签名的委托。CreateDelegate(类型、对象、方法信息)。只需传入要创建实例的委托类型、调用的目标(即将调用什么方法)和要调用的方法。如果这个调用有一个通用版本来避免抛出结果,那就太好了,不过没关系。下面是一个完整的示例,演示其工作原理:
这将打印出2、4和-1;如果我们叫“你好”,我们会得到什么。索引(…)直接地现在让我们看看速度差异是什么 我们最感兴趣的是从主调用代码到被调用方法所花费的时间,无论是直接方法调用MethodInfo。调用或委托。为了使IndexOf本身花费尽可能少的时间,我通过传递H来测试它,使其立即返回0。正常情况下,测试很粗糙,但结果如下: 直接0.18 反射120 复制自: https://blogs.msmvps.com/jonskeet/2008/08/09/making-reflection-fly-and-exploring-delegates/ |
|
|
JBryanB · 如何从基本抽象类访问类属性 3 年前 |
|
|
Gabe Tucker · 无法在golang中分配接口对象指针 4 年前 |
|
|
jkone27 · F#-在编译时从字符串生成简单的空类型 8 年前 |
|
|
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 8 年前 |
|
|
Randall Flagg · 访问propertyinfo中的属性 8 年前 |
|
|
Kacper · 在反映的全名和成员c后的“*”中,“+”是什么意思# 8 年前 |
|
|
tobeypeters · 反射铸造 8 年前 |
|
|
myst02 · 如何在另一个方法之后调用该方法? 8 年前 |