我的应用程序分为两部分。一个C#可执行文件,它是前端UI和一个C ++ dll,它更像是低级别的东西。我的应用程序创建并管理许多对象实例,其中每个C ++对象实例都有一个对应的C#对象实例。我可以使用哪些技术或库来确保C#和C ++部分中的对象以及这些对象中的数据在运行时始终保持同步?在一个对象实例中更改一个成员应该更新相应的对象实例。
谢谢!
编辑:通过将对象保持在“同步”
来澄清我的意思答案 0 :(得分:2)
也许代码生成效果很好。例如。在一个位置(可能是XML或其他)定义这些类的属性/方法,并从中生成C#和C ++类。也许使用CodeSmith(http://www.codesmithtools.com/)之类的东西来生成代码。
答案 1 :(得分:1)
目前还不是很清楚它是否可以解决问题,但你考虑过Managed C ++吗?我只是将我的C ++代码编译为托管C ++,然后使用托管扩展来创建直接使用底层C ++数据的.NET类,我取得了相当不错的成功。这样,只有一份数据副本。
可能不适合所有情况(我没有通过任何方式测试其限制)但我发现它相当长。由于托管C ++是一种适当的.NET语言,因此从C#端使用的结果很干净,在尝试这种事情时,通常不会有任何常见的奇怪或怪癖。
(另一种类似的方法是使用SWIG(http://www.swig.org/)为你生成包装。我听说它很容易使用并且运行良好,但我自己没有使用它。)