c# - 元编程 : write in one language X, C#、PHP、Java、C 等多种语言交叉编译

标签 c# java php metaprogramming cross-compiling

在我多年来完成的所有项目中,我从未遇到过这样的要求,尽管在纸面上看起来很简单:为许多知名的 CMS 编写插件。

显然,每个插件系统(或扩展系统)都是不同的,这需要通过适配器模式进行特定的桥接代码。但是核心应该写一次。我不希望 WordPress 用户使用 PHP-Java 桥接器,也不希望 DotNetNuke 用户使用 .NET-Native 桥接器(尽管这更容易构思)。

在我看来,核心应该可以在涵盖大多数 CMS 系统的三个主要领域中编译:

  • 本地中间语言可以是 C 或 C++。目标可以用作 PHP 扩展。
  • 基于 .NET 的语言的 MSIL/CIL
  • 基于 Java 的系统的 Java 字节码

C# 和 Java 相互转换得很好,但 C 和 C# 更难。最终,最好添加其他目标,以免强制 WordPress 或 WikiMedia 用户在使用插件之前安装扩展。

我相信其他人也想出了这个。解决此类问题的常用方法是什么?我应该先定义一个 DSL 并使用 DMS 或类似的方式进行转换吗?其他选择?

最佳答案

Haxe是一种为不同平台编译的元语言:

  • JavaScript
  • C++
  • C#
  • HashLink
  • Java
  • 路亚
  • PHP
  • python 3
  • NekoVM
  • 快闪
  • ActionScript 3

关于c# - 元编程 : write in one language X, C#、PHP、Java、C 等多种语言交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329940/

相关文章:

java - 将 GWT-RPC-Applicaton 部署到 OpenShift 时出现 ClassNotFoundException

java - 需要有关使用 SQL 和 java 程序的分离度的帮助

java - transient 如何在序列化 Java 中与 final 一起工作

php - 如何在 curl php 中解决 HTTP/1.1 400 Bad Request

php - 如何将一个表中的ID替换为另一表中的相应值?

c# - 使用 Alphavss 的卷影复制错误

C# 6.0 和 null

c# - Microsoft Web API 生成 WSDL 的最简单途径

c# - 要与一个进行比较的多个字符串值。类似于 attributetocheck.Equals(att1,att2,att3)

php - 数据依赖,PHP