问题标签 [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.
c# - 如何调用操作来自 il 发电机
在此示例代码中,我试图从 il 生成器调用匿名操作。我不确定是否以及如何加载对委托的引用以及如何调用它。如果OnFunctionCall
是静态方法而不是属性,我可以做到。
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 触发的事件创建的任务
.
这是我认为最相关的代码摘录(此处为完整代码):
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 method,DynamicResolver
有一个ResolveToken
返回methodHandle
地址的方法。所以我在答案中使用了一些代码:
但是...DynamicResolver
只会在方法中被初始化,在DynamicILGenerator.GetCallableMethod
方法中被调用DynamicMethod.GetMethodDescriptor
,所以resolver
当我得到它时必须为空。
这是我的动态方法:
JIT我学的很少,所以不是很懂。
有人可以帮忙吗?
--------------------------------已编辑----------------- ---------
@Latency 的答案很好:
过了这么久,我不记得在获取 RuntimeMethodHandle 并拒绝动态方法之后接下来会发生什么,但我希望这可以帮助其他人。
c# - 如何以动态方法捕获局部变量?
(我是英语新手)
我使用Expression.Lambda动态创建 lambda。
我想要捕获变量,但我不知道如何使用表达式进行捕获。
我想使用 Expression@Lambda 创建 lambda(看注释“THIS”)。这是可能的?
这是我正在尝试制作的代码。(不工作)
c# - 在相同属性上将一个对象映射到另一个对象的表达式
我正在尝试使用Expression
以下代码创建一个简单的映射器:
对我来说一切似乎都很好,但是当我尝试测试它时,我只是得到一个空引用异常。测试对象及方法:
你知道那里发生了什么吗?我错过了什么?
注意:我不能使用第三方映射器(如 AutoMapper)
c# - DynamicMethod 'skipVisibility' 是否有性能损失?
DynamicMethod
在C#中创建不需要或不相关绕过可见性的 a 时,为构造函数的skipVisibility参数指定的最佳值是什么DynamicMethod
?是否存在性能损失,即与运行时安全需求相关联,用于指定true
skipVisibility ,如果是这样,惩罚是否会在每次调用时发生,或者在第一次访问之前在 JIT 时间仅发生一次?
MSDN 文档:DynamicMethod
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
我错过了什么还是坏了?谢谢
c# - DynamicMethod 调用因 StackOverFlowException 而终止
我有这个类(简化示例)
我想在using的实例上Bar
调用该方法,如下所示:Bar
DynamicMethod
但是,它不能按预期工作,而是中止
进程因 StackOverFlowException 而终止。
有人可以告诉我我做错了什么吗?是不是参数不匹配?如何调用 的Func
特定实例Bar
?
c# - IEnumerable 上的类似正则表达式的模式匹配而不是 C# 中的字符串字符
我正在尝试修改 C# 中的 CIL 代码指令列表。常见任务包括查找指令组或指令模式,并用其他指令替换它们,同时重用原始匹配中的一些信息。这听起来很像正则表达式,只是我的用例是在实例列表中的特定类型而不是字符串中的字符。
我可以编写一些基本代码来搜索和匹配内容并替换它,但我想知道是否有更通用的方法使用正则表达式语法,如“x”?或“(a|b)+”或“(a+)b*(c+)”,但 a、b、c 不是字符而是类的实例。最好在结果表达式中引用捕获的部分。我知道某些模式,如“单词开头”或“空格”是没有意义的。
在我的开源补丁库Harmony中,我以自定义元组类型表示操作码及其操作数,模式匹配应在 IEnumerable 上运行,并最终生成一个新的 IEnumerable。
是否有一个通用的模式匹配算法可以扩展来存档?