问题标签 [dynamicmethod]

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 投票
1 回答
735 浏览

c# - 如何调用操作来自 il 发电机

在此示例代码中,我试图从 il 生成器调用匿名操作。我不确定是否以及如何加载对委托的引用以及如何调用它。如果OnFunctionCall是静态方法而不是属性,我可以做到。

0 投票
1 回答
218 浏览

c# - 如何将 DynamicMethod 标记为 SecurityCritical?

我正在使用此 TaskFromEvent 方法的略微修改版本。它基本上创建了一个在事件触发时完成的任务。这可以通过使用DynamicMethod和发出 IL 代码来实现。当我在虚拟环境中进行一些简单的测试时,一切正常。但是后来我需要在更复杂的环境中使用它¹并且它与Attempt of transparent method DynamicClass.unnamed to access a critical type RenamedEventArgs was denied. 我只是模糊地理解 IL 和 CAS 的概念,但从我读过的内容来看,我认为这可以通过应用[SecuritySafeCriticalAttribute]来解决DynamicMethod,但我该怎么做呢?如何将此属性应用于动态方法?


¹:具体来说,我需要等待由 CefSharp 中的 JavaScript 触发的事件创建的任务

.

这是我认为最相关的代码摘录(此处为完整代码):

0 投票
1 回答
2179 浏览

c# - C#如何从DynamicMethod获取RuntimeMethodHandle?

我想在 .Net Framework 4 中用动态方法替换一个方法,然后我在动态替换 C# 方法的内容中找到了一个非常有用的答案?,但我无法直接从 DynamicMethod 获取 MethodHandle:

我们无法返回 MethodHandle,因为我们无法通过 GC 跟踪它,因此此方法不受限制

在这篇文章CLR 注入:运行时方法替换器中,

m_method找不到。

然后我注意到了m_methodHandle,但不知道它什么时候会被初始化。

根据另一个问题Resolving the tokens found in the IL from a dynamic methodDynamicResolver有一个ResolveToken返回methodHandle地址的方法。所以我在答案中使用了一些代码:

但是...DynamicResolver只会在方法中被初始化,在DynamicILGenerator.GetCallableMethod方法中被调用DynamicMethod.GetMethodDescriptor,所以resolver当我得到它时必须为空。

这是我的动态方法:

JIT我学的很少,所以不是很懂。

有人可以帮忙吗?

--------------------------------已编辑----------------- ---------

@Latency 的答案很好:

过了这么久,我不记得在获取 RuntimeMethodHandle 并拒绝动态方法之后接下来会发生什么,但我希望这可以帮助其他人。

0 投票
0 回答
171 浏览

c# - 如何以动态方法捕获局部变量?

(我是英语新手)

我使用Expression.Lambda动态创建 lambda。

我想要捕获变量,但我不知道如何使用表达式进行捕获。

我想使用 Expression@Lambda 创建 lambda(看注释“THIS”)。这是可能的?


这是我正在尝试制作的代码。(不工作)

0 投票
0 回答
47 浏览

c# - 使用 DynamicMethod 生成运行时方法

我有一个带有一些逻辑的 HelloWorld 方法。我必须生成许多具有与 HelloWorld 相同逻辑实现的名称不同的方法。如果 HelloWorld 方法没有任何参数,这很容易做到。当我必须使用 DynamicMethod 将一些参数传递给 HelloWorld 时,问题就开始了。这里有一段代码可以帮助你理解。

请帮我根据我的情况修改此代码。提前致谢。

PS我已经用谷歌搜索过了,没有找到任何适合我的案例。这是我使用的一些谷歌搜索结果

使用的代码示例

另一个例子

0 投票
1 回答
1447 浏览

c# - 在相同属性上将一个对象映射到另一个对象的表达式

我正在尝试使用Expression以下代码创建一个简单的映射器:

对我来说一切似乎都很好,但是当我尝试测试它时,我只是得到一个空引用异常。测试对象及方法:

你知道那里发生了什么吗?我错过了什么?


注意:我不能使用第三方映射器(如 AutoMapper)

0 投票
1 回答
225 浏览

c# - DynamicMethod 'skipVisibility' 是否有性能损失?

DynamicMethodC#中创建不需要或不相关绕过可见性的 a 时,为构造函数的skipVisibility参数指定的最佳值是什么DynamicMethod?是否存在性能损失,即与运行时安全需求相关联,用于指定trueskipVisibility 如果是这样,惩罚是否会在每次调用时发生,或者在第一次访问之前在 JIT 时间仅发生一次?

MSDN 文档:DynamicMethod

0 投票
0 回答
107 浏览

c# - 异常的堆栈跟踪中缺少 C# 动态方法 iloffset

似乎 StackFrame.ILOffset 为 Microsoft 中的动态方法返回 -1。在 Linux 下与 Mono 一起工作正常。

我在https://blogs.msdn.microsoft.com/jmstall/2005/02/03/debugging-dynamically-generated-code-reflection-emit上尝试了可调试属性的东西,但它没有任何区别。

DebuggableAttribute.IsJITTrackingEnabled 的 MS 文档还指出,运行时始终为 v2 及更高版本生成 native-to-iloffset,因此在任何情况下似乎都没有必要。 https://msdn.microsoft.com/en-us/library/system.diagnostics.debuggableattribute.isjittrackingenabled%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

我错过了什么还是坏了?谢谢

0 投票
1 回答
62 浏览

c# - DynamicMethod 调用因 StackOverFlowException 而终止

我有这个类(简化示例)

我想在using的实例上Bar调用该方法,如下所示:BarDynamicMethod

但是,它不能按预期工作,而是中止

进程因 StackOverFlowException 而终止。


有人可以告诉我我做错了什么吗?是不是参数不匹配?如何调用 的Func特定实例Bar

0 投票
0 回答
225 浏览

c# - IEnumerable 上的类似正则表达式的模式匹配而不是 C# 中的字符串字符

我正在尝试修改 C# 中的 CIL 代码指令列表。常见任务包括查找指令组或指令模式,并用其他指令替换它们,同时重用原始匹配中的一些信息。这听起来很像正则表达式,只是我的用例是在实例列表中的特定类型而不是字符串中的字符。

我可以编写一些基本代码来搜索和匹配内容并替换它,但我想知道是否有更通用的方法使用正则表达式语法,如“x”?或“(a|b)+”或“(a+)b*(c+)”,但 a、b、c 不是字符而是类的实例。最好在结果表达式中引用捕获的部分。我知道某些模式,如“单词开头”或“空格”是没有意义的。

在我的开源补丁库Harmony中,我以自定义元组类型表示操作码及其操作数,模式匹配应在 IEnumerable 上运行,并最终生成一个新的 IEnumerable。

是否有一个通用的模式匹配算法可以扩展来存档?