问题标签 [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 回答
640 浏览

c# - ILGenerator:如何使用非托管指针?(我得到一个验证异常)

我正在制作一个声音合成程序,用户可以在其中创建自己的声音,进行基于节点的合成、创建振荡器、滤波器等。

该程序将节点编译为一种中间语言,然后通过 ILGenerator 和 DynamicMethod 将其转换为 MSIL。

它适用于存储所有操作和数据的数组,但如果我能够使用指针允许我稍后执行一些位级操作,它会更快。

PD:速度很重要!

我注意到一个DynamicMethod构造函数覆盖有一个方法属性,其中一个是UnsafeExport,但我不能使用它,因为唯一有效的组合是Public+Static

这就是我正在尝试做的事情,它会抛出一个 VerificationException:(只是为指针分配一个值)

0 投票
1 回答
1682 浏览

c# - 动态程序集和方法

我已经编写 .NET 和 C# 多年了,但直到最近才遇到这种DynamicMethod类型以及反射上下文中的动态程序集的概念。它们似乎总是在 IL(运行时代码)生成中使用。

不幸的是,MSDN 在定义动态程序集/方法实际是什么以及它们应该用于什么方面做得非常糟糕。有人可以在这里启发我吗?与DLR有什么关系吗?它们与运行时静态(正常)生成程序集和方法有何不同?我应该知道如何以及何时使用它们?

0 投票
2 回答
21066 浏览

groovy - 如何在 Groovy 中动态调用方法?

在运行时,我正在获取一个类的方法名称列表,并且我想调用这些方法。我了解如何从这里完成第一部分:http: //docs.codehaus.org/display/GROOVY/JN3535-Reflection

我似乎找不到有关如何在获取方法名称后调用方法的信息。

我想要的是到达这里:

我似乎找不到正确的语法。以上似乎假设我已经为 GroovyObject 类重载了默认的 invokeMethod,这不是我想要的方向。

0 投票
1 回答
664 浏览

c# - 在运行时将事件处理程序添加到主体源代码存储在变量中的控件

我需要一点帮助!

我在运行时创建自定义控件,反序列化包含信息的 xml。我的自定义控件有两个属性,一个是事件的名称,第二个是事件引发时要执行的代码(即方法体)。

我提取两个变量中的值。我需要的是在运行时为执行存储在变量中的代码的事件添加和处理程序到我的控件。

有什么建议么?预先感谢您的帮助!

0 投票
1 回答
74 浏览

c# - 在 Reflection.Emit 中为动态生成的方法添加描述

我使用 Reflection.Emit 来动态生成一些类型和方法。一切正常,但我想在该方法中包含一些描述性信息,以便其他人可以更轻松地使用它。您通常会通过在方法上方包含此内容来执行此操作:

是否可以在 Reflection.Emit 中包含此信息,如果可以,如何?

0 投票
3 回答
531 浏览

c# - 为什么 Ldvirtftn 无法验证?

谁能解释在使用匿名托管的动态方法时,为什么 ldvirtftn 对于公共类上的公共虚拟方法会出现无法验证的异常?我还设置了以下程序集级别属性:

这是示例代码:

如果该方法是拥有的,那么它不会引发异常。

更奇怪的是,如果我像这样更改代码,那么这两种方法都可以毫无问题地编译和运行:

此代码是使用反射库编写的。

CodeGen.CreateDelegate 只是使用类型参数来确定动态方法的签名。这是方法::

0 投票
1 回答
980 浏览

c# - 是否可以从 MethodBuilder/ConstructorBuilder 调用 DynamicMethod

我有一个从 ConstructorBuilder 创建的 ILGenerator,我想用它创建和调用 DynamicMethod,但我得到一个 InvalidOperationException - 无法从不同的模块导入全局方法或字段。

0 投票
1 回答
346 浏览

c# - 如何在为 DynamicMethod 发出的代码上调试 InvalidProgramException

在搜索了 stackoverflow 和大量谷歌搜索之后,为调试 DynamicMethods 发出的代码提供的解决方案似乎已经过时并且非常笨拙。

在 LCG(轻量级代码生成)发布后的 4 年或更长时间内,肯定有人找到了更好的方法。

您发现验证您编写的动态 IL 并对其进行调试的最简单方法是什么?

你使用 peverify 或 ILDasm 还是其他的?这两个工具需要将程序集写入磁盘,但 DynamicMethod 没有提供任何直接的方法来做到这一点。

显然 WinDbg aso 提供了一种查看 IL 的方法,但处理它非常尴尬。

像 VisualStudio 2010 的插件之类的东西将是理想的。

有任何想法吗?

0 投票
1 回答
1544 浏览

c# - 通过动态方法获取静态字段的值

我有以下课程:

我想通过 DynamicMethod 访问 HELLO 的静态字段。GetValue 的标准反射有效:

但我需要类似的东西(OpCodes 来自类似方法的 ILDasm):

这个想法非常简单,动态方法适用于非静态字段(ldfld 操作码和对象),但是当我尝试访问静态字段时,我收到异常:

0 投票
1 回答
664 浏览

c# - DynamicMethod.Invoke 或 DynamicMethod.CreateDelegate+Invoke - 哪个更快?

以下哪项提供更好的性能:

或者

请注意,通常会创建 10 或 100 种不同的 DynamicMethod,并且每个 DynamicMethod(通过存储的 'dm' 或 'del' 的哈希表)将被多次调用。