问题标签 [dynamic-method]

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

c# - 通过将字符串传递给函数来访问属性或方法

我有一个提供大量 API 的 .net 程序集,我需要为它编写一个 COM 包装器。由于时间限制,我无法为 .net 程序集提供的每个方法和属性编写接口。相反,我打算做的是编写一个通用的 commandParser 函数,它接受字符串参数,给出被引用的属性或方法的完整路径(?),然后该方法必须调用正确的属性或方法。例如,假设我需要设置属性 Visible ,我将传递如下字符串(请参阅图像以获取类结构)或者如果需要调用方法

“APx.AcousticResponse.AcquiredWaveform.DeltaCursor.Visible”

或者

“APx.BandpassLevel.FixedTuningFrequency.GetValue(Unit)”**

显然我一无所知,我知道使用反射是可能的,但我还没有到那里。这是我迄今为止一直在工作的虚拟代码,但没有任何成功:P

非常感谢任何提示或帮助

0 投票
1 回答
489 浏览

.net - 如何从单例调用实例方法与发射

我有例外:操作可能会破坏运行时,我不知道为什么:(。请帮助我。

我添加了本地,但仍然无法正常工作...

方法要动态创建(REF000001):

这是类,我想从单例中调用方法。

从 ILDASM 返回:

我的带有 IL 生成器抛出异常操作的代码可能会破坏运行时的稳定性

0 投票
1 回答
147 浏览

objective-c - 如何在 Objective-C 中编写真正动态的方法?

我刚刚开始开发这个库

它的主要目标是允许程序员编写像句子一样的方法名称来使用 Core Data。

例子:

或寻找对象:

但是如果不关闭 ARC,我就无法让它工作。(上一个Q:运行时编程动态方法时使用ARC编译时出错)。

从邮件列表:

我们的推理分为 50/50,(1)需要对类型和所有权更加小心,(2)希望消除语言中令人尴尬的缺陷(不允许用任何比警告)。确实没有正当理由调用甚至没有在某处声明的方法。这样做的能力使一些非常微不足道的错误(例如选择器中的拼写错误)运行时失败而不是编译失败。我们一直对此提出警告。修复你的代码。

那么,Objective-C 不再是真正的具有动态方法的 Objective-C 了吗?

现在是否可以在 RubyDavidson 中实现我想要的东西?

0 投票
1 回答
71 浏览

ruby - How to refactor instance methods using dynamic methods in Ruby?

I want to refactor this:

into something like this:

The problem is in line define_method song_attribute do where song_attribute must be pluralized. How do I do this?

I came up only with this, but I suppose there is a better way:

0 投票
1 回答
274 浏览

ruby - 使用 define_method 和 eval 的动态方法

我已经将两个以几种不同方式实现的示例类放在一起,它们很好地反映了我想要在我的 Rails 模型中做的事情。我担心的是,我不知道使用这两种方法有什么问题(如果有的话)。而且我只找到了解释如何实施它们的帖子或使用它们时要避免/小心的一般警告。我还没有找到关于如何安全地完成此操作的清晰解释,以及我要注意什么或为什么我应该避免这种模式。

0 投票
2 回答
102 浏览

php - 动态php方法

是否可以动态创建方法?例如:我有一个名为“createMethod()”的方法。我想将变量传递给这个方法,描述动态方法的外观(函数描述,作为数组或对象的参数)。我一直在尝试做类似的事情,我敢打赌我一直在描述参数并且与 eval() 函数混淆了,我曾经用它来形成一些变量。

有人能给我一个简单的例子吗?这种动态方法会是什么样子?可能已经在 Zend 或 CodeIgniter 框架中创建了一些有用的东西?

谢谢!

0 投票
1 回答
949 浏览

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

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

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

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

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

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

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

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