如何在Java和C之间共享类定义#
我有两个项目正在一起工作。它们分别是Java和C。后端是Java,前端是C#。他们正在用RESTAPI相互交谈。由于它们是两种不同的编程语言,现在我必须为两个项目定义两次公共类,这无论如何都是多余的 我要找的是一个可以同时用于两个项目的类/结构。所有成员都是string或int。例如如何在Java和C之间共享类定义#,java,c#,Java,C#,我有两个项目正在一起工作。它们分别是Java和C。后端是Java,前端是C#。他们正在用RESTAPI相互交谈。由于它们是两种不同的编程语言,现在我必须为两个项目定义两次公共类,这无论如何都是多余的 我要找的是一个可以同时用于两个项目的类/结构。所有成员都是string或int。例如 class Person { int age; String name; String grade; }; 我的第一个偏好是类似idl的东西(一个文件可以在两个项目中编译)。如果不可能,在
class Person
{
int age;
String name;
String grade;
};
我的第一个偏好是类似idl的东西(一个文件可以在两个项目中编译)。如果不可能,在编译期间,从一种语言到另一种语言的转换也是可以接受的,因为转换是免费的,并且可以在企业代码库中使用,而不会产生法律影响
非常感谢 一个可能的选择:用Java编写类,使用IKVM工具为它们生成.NET代码 我在几个Java项目上使用了IDL,以便与用C(而不是C)编写的其他系统组件进行交互操作 我做了以下工作:
module com {
module my {
module package {
struct Person {
int age;
String name;
String grade;
};
};
};
};
IDL.bat-genEnhanced-d{outputDir}{path/to/myFile.IDL}
这将获得文件的Java版本(Java文件可以与您拥有的任何其他Java文件一样使用)。快速挖掘表明它为C#提供了类似的编译器功能(同样,我没有使用C#IDL编译器,只是使用Java编译器)。创建XSD定义,并使用正确的工具(Java中的xjc,不记得.NET)在每个平台上创建对象。支持很多很多平台,尽管在处理不同数据类型(尤其是集合)的方式上存在一些细微的差异,但可以编写适用于所有情况的XSD定义。即使你没有序列化,它也会给你一个独立于语言的定义。是什么阻止你使用IDL?@curob我猜他不知道怎么做。