Множество способов сделать что-то вроде того, что вы хотите.
Например, вы можете посмотреть на использование языка определения интерфейса (IDL).IDL Corba позволяет вам объявлять объекты и интерфейсы не зависящим от языка способом.Эти idl-файлы затем запускаются через компилятор IDL, который выводит соответствующие классы, заголовки, заглушки, прокси и т. Д. Для выбранного вами языка.
Например, IIOP.NET - это реализация Corba для C #.Я понятия не имею, насколько это хорошо, но он будет иметь компилятор IDL, который выплевывает классы C #.В Java есть компилятор IDL, называемый idlj, как часть JDK.
Теоретически, вы могли бы реализовать C # и Java из одних и тех же интерфейсов и классов.
Еще один способ сделать что-то подобноеиспользовать инструмент UML, который может генерировать исходный код из модели.
Другая альтернатива - использовать что-то вроде WSDL / XSD для определения ваших интерфейсов и типов и генерировать из них заглушки.