我正在寻找一种方法来生成一些模型类以多种语言(Java,C#,JavaScript)来保持这些类之间的一致性。是否有一些工具可以帮助我在一个地方定义模型,并在每次更改所有三种语言后生成模型?我在寻找JetBrains MPS,但它似乎对于只生成一种语言很有用,它甚至用文档编写,建议只有一种语言生成器(如果有的话)。如何为多种语言生成类
到目前为止我发现的唯一方法是为每种语言编写XML文件和XSL转换,但我正在寻找更方便的方法。
我正在寻找一种方法来生成一些模型类以多种语言(Java,C#,JavaScript)来保持这些类之间的一致性。是否有一些工具可以帮助我在一个地方定义模型,并在每次更改所有三种语言后生成模型?我在寻找JetBrains MPS,但它似乎对于只生成一种语言很有用,它甚至用文档编写,建议只有一种语言生成器(如果有的话)。如何为多种语言生成类
到目前为止我发现的唯一方法是为每种语言编写XML文件和XSL转换,但我正在寻找更方便的方法。
从最严格的意义上说,这是不可能的,因为这些语言的某些特征不会互相转换。
例如,将delegate Method();
放在C#中,就像您在建模时做的那样,它会立即中止直接转换为Java,因为Java没有委托方法的概念。
当然,这两种语言在理论上图灵完整,因此他们做翻译,但翻译还必须是:
上面的第2步太复杂了。 (这就是为什么你可以将任何C#编译成编译好的EXE,而不用担心有人盗取你的源代码。)
如果用“model”表示只保留数据的类,并且需要序列化/反序列化的一致性,你应该考虑谷歌协议缓冲区:https://developers.google.com/protocol-buffers/或类似的解决方案。
对于更复杂的应用,你可以考虑用C编写并产生痛饮包装:http://www.swig.org/,但极端;)
我要强调单词“模式” - 通过我的意思类,只保留数据。我不想在一个地方编写一个完整的软件,并用N种语言编译它。 – bretik 2011-06-07 11:12:57