问题标签 [dynamic-code]

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

c# - C# 动态类型初始化器

我正在尝试动态构建类似于 C# 类型初始化器的东西:

我想构建一个泛型方法,该方法反映给定类型一次并返回一个委托,该委托创建类的新实例并根据输入参数填充它。方法签名可能如下所示:

调用结果函数将创建一个新的 'T' 实例,其中(例如)每个 String 类型的公共属性都与输入字符串参数的值相同。

因此,假设“MyClass”只有 MyStringProperty,下面的代码在功能上将等同于开头的代码:

我对 System.Reflection 和 System.Linq.Expressions 命名空间非常熟悉,过去我也做过一些类似这样的中等复杂的事情,但这个让我很困惑。我想构建一个编译的委托,而不是简单地使用反射遍历属性。

谢谢!

0 投票
4 回答
2546 浏览

java-compiler-api - 支持泛型的 Java 动态代码生成

是否有任何工具可以提供 Java 动态代码生成并且还支持泛型?

例如,Javassist 是我需要的那种工具,但它不支持泛型。

我编写了一个使用 Java 6 Compiler API 的小库,但据我所知,它依赖于 JDK。有没有办法指定另一个编译器?还是只为我的应用程序提供我需要使用 Java 编译器 API 调用的部分?

0 投票
3 回答
388 浏览

c# - 像系统一样的工作流来改变代码流

我需要有关我们项目之一的要求的建议。我们想要实现的是我们想要控制来自文本或 XML 文件的方法调用流。

例如:

我如何以某种格式表示上述代码,非技术用户可以更改这些格式以修改函数调用的顺序。

0 投票
3 回答
338 浏览

c# - Execute a method of a different namspace by dynamic code in C# winforms

I am implementing a dynamic code execution in C# which allows users to write their own c# for that particular application.

I am using C# code compiler for executing the dynamic codes. The C# compiler reads the code file and construct the code in new namespace (a complete new code), compiles and runs it. In other view the base application host all these.

I have few methods that are present in host application that I want to be executed by the dynamic code. Is there any way by which the method of other namespace or application can be executed?

0 投票
2 回答
162 浏览

c# - 通过 Web 服务公开 system.dll 是否存在安全问题?

我很好奇仅仅访问 C# 中的 System.dll 命名空间会造成什么损害。

我正在玩动态代码编译并创建了一个简单的网站,允许我输入 C# 代码。这通过 Web 服务传递给一个类,该类在新线程中编译和运行代码,并通过 WS 返回(代码必须返回一个字符串)结果并显示在网页上。

现在我有一个简单的检查来中止线程,如果它运行超过 5 秒,以确保像无限循环这样简单的东西不会崩溃。

“假设地”说,如果我发布了这个 Web 应用程序,是否有人可以通过访问 System.dll 对 Web 服务器造成严重/任何损害?

**某些示例的奖励积分!:)

0 投票
4 回答
3977 浏览

c# - 在 ILGenerator 的堆栈顶部放置一个对象

我必须将一个对象的实例传递给一个函数,所以显然所有要作为参数的信息都将加载到评估堆栈中 这是我正在寻找的代码

我不需要存储在类中的任何信息只是类型,我不能使用任何原始类型来做出决定

最后我读到我可以使用指针来使用一些操作码加载类型......但我在这里完全迷失了,任何帮助或指向正确方向的指针都会很棒:)

[更新]

好吧,我找到了我自己的问题的答案,尝试了它,它工作不知道它是否是正确的方法,但我可以成功地创建一个对象并将其加载到堆栈中并将它传递给一个函数

SomeFunctionMethodInfo 是一个以 Object 作为参数的函数,我已成功地将对象传递给函数,并且还可以对其进行操作并将类作为对象返回。

我在任何地方都找不到对这个例子的引用,只是通过 MSDN 弄清楚了,我做错了什么还是有什么缺点?如果您可以纠正它或提供更好的答案,请专家

0 投票
1 回答
743 浏览

visual-studio - 如何在 Visual Studio 中突出显示动态代码

是否有可能以及如何使 Visual Studio 突出显示代码中的动态表达式?

当我刚刚悬停在一些代码上方时,Visual Studio 告诉我这是一个动态表达式。这让我意识到我在代码中犯了一个错误,并且使用了太多的动态。但我也意识到,如果我没有悬停,那么应该是静态的“大量”动态代码就会逃脱。

所以我想知道是否可以让 Visual Studio 改变动态表达式的背景颜色,这样那些片段就会清晰可辨。

[编辑]
对于动态表达式,我的意思是在常规代码中使用动态关键字。

0 投票
3 回答
3431 浏览

php - 加载同一类的多个版本

假设我将代码库作为独立的 PHP 类发布。然后有人在他们的应用程序中使用该库的 1.0 版。后来,我发布了该库的 2.0 版,而同一个人出于任何原因需要在其应用程序中同时使用 1.0 和 2.0,因为他或我破坏了与新版本的向后兼容性。

如果类名不同,则很容易包含和实例化两者,因为没有命名冲突。但是如果类名保持不变,我们就会遇到问题:

这是行不通的,因为我们不能同时加载两个名称为 name 的类Library。另一位开发人员建议的另一种选择是使用命名空间。以下应该有效:

不幸的是,这不是非常可扩展的。它适用于 2 实例情况(希望我不必首先使用),但要将其扩展到 3、4、5 或更多实例,您需要定义额外的命名空间并设置,如果你一开始就没有使用这些命名空间,那是一堆不必要的代码。

那么有没有办法动态地创建一个命名空间,包含一个文件,并在一个唯一命名的变量中实例化该文件中包含的类?


让我补充一些澄清......

我正在构建一组库,供为几个 CMS 平台构建插件/模块的其他开发人员使用。理想情况下,每个人都将始终使用我的库的最新版本,但我不能保证,我也不能保证最终用户在新版本可用时总是升级他们的模块。

我正在尝试使用的用例是最终用户安装两个不同开发人员的两个不同模块:称它们为AppleOrange。这两个模块都使用我的库的 1.0 版,这很棒。我们可以将它实例化一次,两组代码都可以从该功能中受益。

后来,我为这个库发布了一个小补丁。它的版本为 1.1,因为它不会破坏与 1.x 分支的向后兼容性。Apple的开发人员立即更新了他的本地版本并推送了他的系统的新版本。Orange的开发者正在度假,不打扰。

当最终用户更新Apple时,她会获得我的库的最新维护版本。因为它是一个维护版本,所以完全替换 1.0 版被认为是安全的。因此,代码仅实例化了 1.1,而Orange从维护补丁中受益,即使开发人员从未费心更新他们的版本。

甚至后来,出于某种原因,我决定更新我的 API 以向 Facebook 添加一些钩子。新功能和 API 扩展对库有很大的改变,因此我将版本升级到 2.0 以将其标记为在所有情况下都可能不向后兼容。苹果再次介入并更新了他的代码。/lib没有任何问题,他只是用最新版本 替换了他文件夹中的我的库。Orange决定回到学校成为一名小丑,并且已经停止维护他的模块,因此它没有得到任何更新。

当最终用户使用新版本更新Apple时,她会自动获得我的库的 2.0 版。但是Orange在他的系统中有代码已经添加了 Facebook 钩子,所以如果 2.0 默认滚入他的库,就会发生冲突。因此,我没有完全替换它,而是为Apple实例化 2.0 一次,然后并排实例化Orange附带的 1.0 版本,以便它可以使用正确的代码。

这个项目的全部目的是允许第三方开发人员基于我的代码构建系统,而不依赖于它们是否可靠,并在他们应该更新他们的代码时。对于最终用户来说,什么都不会中断,并且在其他人的系统中使用时更新我的​​库应该是一个简单的文件替换,而不是遍历和更改所有类引用。

0 投票
3 回答
119 浏览

ruby - 有多少种方法可以添加到 ruby​​ 对象中?

在运行时自省和动态代码生成方面,我认为 ruby​​ 没有任何竞争对手,除了一些 lisp 方言。前几天我正在做一些代码练习来探索 ruby​​ 的动态设施,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:

这只是冰山一角,因为我还没有探索instance_eval,module_eval和的各种组合define_method。是否有在线/离线资源,我可以在其中找到有关此类动态技巧的更多信息?

0 投票
0 回答
310 浏览

llvm - 是否可以动态生成在 lli 启动的 LLVM 内执行的字节码?

我目前正在评估可能的工具,以提前为玩具编译器项目动态生成机器代码。

编译器应该能够将源代码翻译成可运行的字节码,以便以后可以动态地将代码添加到正在运行的字节码中。

我想知道这对于 LLVM 是否可行,即是否可以扩展(或修改)由 LLVM JIT 编译器/解释器 lli 运​​行的 LLVM 字节码?