Пока определения классов одинаковы с обеих сторон, вы можете использовать двоичную сериализацию для сериализации любого объекта в поток:
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();
Вам лучше использовать WCF, как отмечено выше, однако,так как это сломается, если сборки версированы с любой стороны провода.