问题标签 [dynamic-invoke]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
387 浏览

c# - 获取表达式方法调用目标的快速方法

给定以下代码行,

有没有快速获取target对象的方法?

下面的代码有效

但是非常非常慢。


有没有更快的方法来获取方法调用表达式的目标?


对我的代码 ( GetDelegate,DelegateCompileDelegateDynamicInvoke) 以及 @IvanStoev 的代码 ( GetFunc,FuncCompileFuncInvoke) 进行基准测试会产生以下结果:

所以,Invoke实际上比 快很多DynamicInvoke,但瓶颈实际上是Compile调用。有没有办法在target不编译表达式的情况下获取对象?

基准代码:

0 投票
0 回答
135 浏览

vb.net - DLLImport 与 VB.NET 中的 DinamicInvoke 或 Method.Invoke

我想从"Kernel32.dll"调用函数MoveFile

1)第一种方法:

它工作得很好

  1. 第二种方法:

所以问题:DLLImport 和 DynamicInvoke 或 Method.Invoke 有什么区别,为什么我使用 DynamicInvoke 失败以及传递给 Method.Invoke 的参数是什么?

好的,在第二种方法中,我发现在这一行:

<UnmanagedFunctionPointer(CallingConvention.StdCall)>

在我编辑为之后需要额外的参数:

<UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError:=True, CharSet:=CharSet.Unicode)>

Dim RetVal = MoveFile.DynamicInvoke(src, dst) - DynamicInvoke完美运行。

因此,质疑将什么作为参数传递给 Method.Invoke 仍然打开。

好的,我也想出了 Method.Invoke:

暗淡参数 = {src, dst}

Dim RetVal = MoveFile.Method.Invoke(MoveFile, param) - 完美。

因此,似乎所有三种方法都有效并给出了相同的结果,但是这些方法之间有什么优势。谁能解释一下?