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

c# - 如何使用 CIL 将 POCO 转换为数组?

这是我第一次涉足生成的 CIL,所以请原谅我的无知。我正在寻找一个简单的 DynamicMethod 可以读取 POCO 的字段,并将它们填充到object[]. 不需要类型转换。我已经把所有我能做的都放在一起了,你能帮忙完成吗?

0 投票
1 回答
1028 浏览

c# - 简单生成的 MSIL 抛出“操作可能会破坏运行时”

我创建了一个非常简单的函数,它执行以下操作:

这是生成 MSIL 的代码。为什么这会引发“操作可能会破坏运行时”异常?我看不出有什么问题;它与 Reflector/Reflexil 中看到的组件完美匹配。

0 投票
1 回答
6983 浏览

java - 如何创建回调(添加为动态参数,函数)?

我正在创建这个方法/函数,我需要实现回调。我的意思是,我需要添加一个函数作为动态参数。我已经阅读了几篇文章,但我不明白如何获得它。任何想法或使用示例?

0 投票
2 回答
486 浏览

c# - 动态方法和类型检查

有人可以解释或指出为什么在下面的示例中没有发生运行时类型检查 - 字符串属性可以设置为任何类型值......
在非常意想不到的地方卡住了这个并且真的很惊讶

0 投票
1 回答
150 浏览

c# - Getting an error when I try to use DynamicMethod to create a method that always returns true

Today, I started learning about the DynamicMethod class. For learning purposes, I set about to use DynamicMethod to create a function that takes no argument and always returns the boolean value true.

I created a function to do this in C# and then examined the resulting IL code with Telerik JustDecompile.

It looks simple enough. According to the documentation, it looks like these instructions simply place an integer 1 on the stack to be returned.

Following along with some of the examples I've looked at, I wrote the following Console Application.

However, when I run this code, the following exception is raised on ReturnTrueDelegate();

What does this exception mean and what do I do to fix this?

0 投票
1 回答
81 浏览

c# - 如何从使用 DynamicMethod 和实体框架的代码中提取类型参数?

我正在创建一个框架,旨在允许 Web 开发人员创建 CRUD 页面,而无需通过重复步骤。

为此,我想提供“默认”方法来执行排序、过滤等操作。使用我的框架的开发人员可以选择提供自己的方法,但应该有一个在许多情况下都可以使用的默认方法。

与实体框架兼容对我来说尤其重要。

DynamicMethod我已经使用允许通过搜索键对实体框架生成的任意类进行“通用”过滤的类成功实现了默认过滤功能。

我正在尝试对排序做类似的事情,但我遇到了问题。该OrderBy方法有两个类型参数,第一个是实体类型,第二个是“键”类型。键入的这个键需要与用户想要排序的列的类型相匹配,并且为了使它与所有实体类一起工作,需要在运行时确定类型。

我使用反射来发现列的类型,但我不知道如何将我的“比较器”函数转换为适当的 Func<> 类型。因此,我设置了一个切换类型的 switch 语句。我想摆脱 switch 语句并分解出键类型。

我该怎么做呢?我的代码如下:

0 投票
2 回答
1052 浏览

c# - 使用 DynamicMethod 调用具有泛型参数的方法?

我的目标是创建一个SortRecords接受 anIEnumerable<T>和 aPropertyInfo作为参数的方法。这IEnumerable<T>是一个记录列表。PropertyInfo是 的属性T。调用时,SortRecordsEnumerable.SortBy<T, typeof Property>使用 调用该方法x => x.Property。注意这里Enumerable.SortBy有两个通用参数。此外,反射不能在 lambda 表达式中使用,因为 (a) 它很慢并且 (b) 它不适用于实体框架。

我已经编写了一些代码,但我一直看到错误消息Operation could destabilize the runtime。这是我的代码的样子

结束第一个代码片段

方法定义如下

我认为这个问题可能是相关的:DynamicMethod with generic type parameters

0 投票
2 回答
3328 浏览

objective-c - 使用 forwardingTargetForSelector 进行目标 c 消息转发并不总是有效

我有一个视图控制器,它定义了一个本身继承另一个协议的协议。我希望任何实现我的协议的对象也实现继承的协议。

我想将我的班级设置为拦截继承协议中的一些消息,以便在内部配置一些东西,但最终想将所有消息转发给我班级的代表

我可以编写很多样板代码来存根所有协议并实习生调用委托,但我发现它经常中断 - 任何时候“超级”协议发生变化,我都需要再次重新存根这个类。

我看到这在自定义 UI 控件中非常重要。重用现有组件时 - 例如表或集合视图,您希望数据源响应所有常见协议,但在某些情况下,您需要根据索引配置视图或保存特定状态。

我已经尝试使用forwardingTargetForSelector来转发我不回复的消息,但它并不总是转发......

这是一个人为的代码示例:

0 投票
1 回答
239 浏览

.net - 如何在 DynamicMethod 中调用 Nullable.HasValue?

我正在使用 DynamicMethod 编写一些代码。在我的 DynamicMethod 中,我想调用 Nullable.HasValue(以及 Nullable.Value)属性。我已经编写了一些代码来做一些事情,但我不断得到Operation could destabilize the runtime error.

这是我的代码:

我应该补充一点,根据 Telerik JustDecompile,返回 HasValue 属性的 C# 代码转换为 IL 如下:

0 投票
1 回答
949 浏览

c# - 表达式树中的动态方法调用

在构建表达式树时,我必须使用调用外部方法的节点来获取表达式然后可以继续评估的值。这些方法是提供的Func<T>,我的代码不知道它们的来源。

执行上述调用的最正确方法是什么?我试过这样的事情:

只要method从字典中获取的内容是在编译时创建的,它就可以工作。但是,如果Func<T>是动态方法,例如,通过在运行时编译另一个表达式,这将无法解决抛出

ArgumentException:为调用方法“Int32 lambda_method(System.Runtime.CompilerServices.ExecutionScope)”提供的参数数量不正确

可以通过将给定函数包装到一个额外的表达式中来实现所需的效果,但与它过去的样子相比,这似乎非常可怕:

此外,如果我需要添加对double和以外的类型的支持,这几乎不是一种可扩展的方法string

我想知道是否有更好的选项可以与动态创建的方法一起使用(最好适用于 .NET 3.5)。