如何在Java和C之间共享类定义#

如何在Java和C之间共享类定义#,java,c#,Java,C#,我有两个项目正在一起工作。它们分别是Java和C。后端是Java,前端是C#。他们正在用RESTAPI相互交谈。由于它们是两种不同的编程语言,现在我必须为两个项目定义两次公共类,这无论如何都是多余的 我要找的是一个可以同时用于两个项目的类/结构。所有成员都是string或int。例如 class Person { int age; String name; String grade; }; 我的第一个偏好是类似idl的东西(一个文件可以在两个项目中编译)。如果不可能,在

我有两个项目正在一起工作。它们分别是Java和C。后端是Java,前端是C#。他们正在用RESTAPI相互交谈。由于它们是两种不同的编程语言,现在我必须为两个项目定义两次公共类,这无论如何都是多余的

我要找的是一个可以同时用于两个项目的类/结构。所有成员都是string或int。例如

class Person
{
    int age;
    String name;
    String grade;
};
我的第一个偏好是类似idl的东西(一个文件可以在两个项目中编译)。如果不可能,在编译期间,从一种语言到另一种语言的转换也是可以接受的,因为转换是免费的,并且可以在企业代码库中使用,而不会产生法律影响


非常感谢

一个可能的选择:用Java编写类,使用IKVM工具为它们生成.NET代码

我在几个Java项目上使用了IDL,以便与用C(而不是C)编写的其他系统组件进行交互操作

我做了以下工作:

  • 下载并安装JacORB()
  • 将IDL编译器(IDL.bat)放在我的路径上
  • 创建一个定义我的共享类型的IDL文件

    module com {
    module my {
    module package {
        struct Person {
            int age;
            String name;
            String grade;
        };
    };
    };
    };
    
  • 运行IDL编译器:
    IDL.bat-genEnhanced-d{outputDir}{path/to/myFile.IDL}


  • 这将获得文件的Java版本(Java文件可以与您拥有的任何其他Java文件一样使用)。快速挖掘表明它为C#提供了类似的编译器功能(同样,我没有使用C#IDL编译器,只是使用Java编译器)。

    创建XSD定义,并使用正确的工具(Java中的xjc,不记得.NET)在每个平台上创建对象。支持很多很多平台,尽管在处理不同数据类型(尤其是集合)的方式上存在一些细微的差异,但可以编写适用于所有情况的XSD定义。即使你没有序列化,它也会给你一个独立于语言的定义。

    是什么阻止你使用IDL?@curob我猜他不知道怎么做。