我有一个C#WinForm项目,它使用几个直接存储为字节的类来编辑内容并将其保存在一个文件中。我有另一个C#项目(控制台)使用这些相同的类来读取以前保存的数据并使用它。为了不复制功能,并且因为这个数据结构经常变化,我将这些类保存在一个单独的DLL中,两个项目都包含在内。
但是,现在我需要在C ++中本机使用该功能,但当然我不能简单地在项目中包含相同的DLL。我试图了解如何解决这个问题,但我想我正在混合几个概念......
是否有任何解决方案允许我从该库实例化类,读取他们的数据并在C#和C ++中调用他们的方法而不需要复制很多东西?
我(可能错误地)考虑的解决方案包括:
1-保留C#DLL,但允许COM互操作并使用它。然后以某种方式为C ++创建和维护包装器。
2-用C ++重写DLL(它现在还很小,所以这不是问题)并在C#中导入它。 P / Invoke似乎不适用于成员函数,所以我仍然需要创建一个包装器。
作为旁注,存储的类使用C#列表和字典。如果有一个解决方案只适用于自定义生成的类,我不介意创建自己的数据结构。