问题标签 [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# - 根据数据库中的数据动态调用 C# 方法
我的老板让我研究计算引擎。实际上,用户将拥有一个可以执行计算的数据表。他们还将能够根据我们强制执行的某些限制构建自己的计算(然后将构建的计算存储在数据库中)
是否可以在 C# 中调用特定方法,具体取决于数据库中存储的内容?因此,如果数据库说,计算应该执行标准偏差。当我们从数据库中获取该信息时,是否可以调用我们将在 C# 中使用的标准偏差方法?
我希望这很清楚。
c# - 动态 IL 方法导致“操作可能会破坏运行时”
System.Security.VerificationException:操作可能会破坏运行时的稳定性。在 Connance.CommunicatorApi.ReportApiClient.AcknowledgeRecallsAsyncDynamicHandler(对象,AcknowledgeRecallsCompletedEventArgs)
这就是我得到的错误。我正在尝试做的(背景)是为一类方法创建一个全局事件处理程序。我正在使用 WCF 中的静态代理,我需要创建一个层来跟踪所有调用并返回到所有 WCF Web 方法。不幸的是,WCF 强烈键入“已完成”事件的 EventArgs,这几乎是不可能的。
我决定尝试一下。如果事件是EventHandler<SomeSpecificEventArgs>
,我仍然可以注册一个签名方法void Method(object, object)
来处理该事件。伟大的。所以我开始创建一个DynamicMethod
调用我的全局处理程序的函数,并将它注册到每个事件中。
我尝试了两种方法:
1) DynamicMethod 是 void (object, object) 类型
2) void (object, SomeSpecificEventArgs) 类型——我为此使用通用方法来获取类型。
只有当我尝试手动或为事件调用该方法时,才会出现上述异常。
这是我的代码:
编辑:我明白了。原来我还有另一个问题。我在 Silverlight 工作。我设法在一个单独的项目中重现了我的场景,并通过使用DynamicMethod
允许您设置所有者的重载来使其工作。然后我指定
DynamicMethod dm = new DynamicMethod("TestMethod2", typeof(void), new[] { typeof(MyClass), typeof(string), typeof(string) }, typeof(MyClass));
,
并使用ldarg.0
,ldarg.1
和ldarg.2
. 但这是一个安全关键的构造函数,不会在 silverlight 上运行。我只是不确定我需要如何设置它。我是否将Handler
公共设为静态并加载 args 0-1?我最终得到这样的错误:
通过方法 'DynamicClass.TestMethod2(System.String, System.String)' 尝试访问方法 'dynamicass.MyClass.Handler(System.String, System.String)' 失败。"}
.net - 在 Silverlight 中使用 DynamicMethod 时出现 VerificationException
我想通过委托调用某些方法,但得到了 VerificationException。我正在使用以下代码:
基本上,我想打电话
this.Startup += this.Application_Startup;
通过使用上述代码的委托。
这给出了 VerificationException: Operation 可能会破坏运行时异常。
通过将此代码放入全新 Silverlight App 项目的 App 构造函数中,这很容易重现。我究竟做错了什么?
.net - 如何通过 ILGenerator.Emit* 调用“正常”方法?
DynamicMethod 是否可以调用(例如通过 ILGenerator.EmitCall 或类似方法)“正常”方法,例如 Private Sub BlahBlah(ByVal obj as Object)?
提前致谢
.net - 将 DynamicMethod 保存到磁盘
我继承了使用 DynamicMethod 在运行时生成方法的代码。我还需要修改一些正在生成的代码。
由于我是 MSIL 的一名 n00b,我希望能够在 Reflector 中加载生成的代码,并确保代码执行我所祈祷的操作;)
只是,我不知道如何将“匿名托管的 DynamicMethods 程序集”序列化到磁盘。这可能吗?如果是这样,怎么做?
c# - DynamicMethod.CreateDelegate 的异常,几乎相同的 MSDN 示例
当我调用 CreateDelegate(delegateType) 时,我得到一个System.ArgumentException
,根据 MSDN,这是因为 delegateType 的参数数量或参数类型错误。
奇怪的是我使用的代码几乎都是从 MSDN 复制的。我的整体功能:
如您所见,评论甚至在那里。你也可以看到我有 delParams 和 handlerParams 变量,它们具有相同数量的相同类型的参数。
这里发生了什么?
MSDN:http: //msdn.microsoft.com/en-us/library/ms228976.aspx
编辑:我试图绑定到的事件:
c# - C# 使用反射调用公共非静态方法而不实例化其类
是否可以在 C# 中调用方法(非静态)而不实例化其类,例如:
我已经使用 System.Reflection.Emit 命名空间尝试了这种方法,我将 MyMethod() 的 IL 复制到了动态方法中,但出现了异常:
检测到 FatalExecutionEngineError :运行时遇到致命错误。错误地址位于线程 0x2650 上的 0x5dceccf5。错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
谢谢
c# - 在不使用 ref 关键字的情况下替换参数的 ref(使用 IL)
我希望能够替换参数的对象引用,而不必使用 ref 关键字。
我避免使用 ref 的原因是为了保留寻找Add(T item)
方法的集合初始化程序调用,并且我需要让集合类用它的接口的不同实现替换引用。
我尝试了几种不同的方法来做到这一点。首先,我尝试使用未记录的关键字__makeref
,__refvalue
和__reftype
.
其次,我尝试DynamicMethod
使用一些 IL 创建一个,该 IL 试图模仿我通过查看带有 ref 参数的反汇编的类似调用所观察到的内容。
下面是一些代码来演示:
谢谢你。
c# - 为什么我不能将 DynamicMethod 绑定到结构实例?
DynamicMethods 允许您为您创建的委托指定目标实例。但是,当您使用结构类型时,这似乎不起作用。它失败并出现异常,告诉我它无法绑定到此方法。错误是因为我的 IL 没有拆箱目标实例吗?
如果我在这里将 A 更改为一个类,它可以正常工作。我究竟做错了什么?(另外请不要建议调用Delegate.CreateDelegate
绑定到带有目标实例的GetType方法)
这是一个示例复制:
注意:我正在Emitted
为 IL 的流利界面使用该库。此外,这里是 CodeGen 方法的代码。