C# Net中的非托管代码 < >我们在C++项目中有一个自定义的ListVIEW树型网格,它是从CeProject TeeGrand示例中构建的。随着时间的推移,代码已经被大量修改 我有一个要求将C++项目移植到C.ViWiFrm。我正在考虑为ListVIEW网格创建一个C++ DLL,并在WiFrase中与它进行互操作。
C# Net中的非托管代码 < >我们在C++项目中有一个自定义的ListVIEW树型网格,它是从CeProject TeeGrand示例中构建的。随着时间的推移,代码已经被大量修改 我有一个要求将C++项目移植到C.ViWiFrm。我正在考虑为ListVIEW网格创建一个C++ DLL,并在WiFrase中与它进行互操作。,c#,visual-c++,winforms-interop,C#,Visual C++,Winforms Interop,我在Winforms中使用非托管Listview控件是自找麻烦吗?我应该在Winforms中移植/重写listview吗?(一项我并不期待的任务)我认为最好用托管代码重新编写它 互操作性通常是有效的,但有一个原因是托管代码是首选的。运行时为您处理了很多事情,而且更易于维护。对于某些任务来说,跨越边界可能会有问题。例如,您还将失去代码访问安全性。有一些好消息 如果你不这样做,那么你总是需要一个.NET开发者和一个C++开发者来维护它。 c++/本机代码本身并没有什么问题,只是混合了两者。我只是觉得
我在Winforms中使用非托管Listview控件是自找麻烦吗?我应该在Winforms中移植/重写listview吗?(一项我并不期待的任务)我认为最好用托管代码重新编写它 互操作性通常是有效的,但有一个原因是托管代码是首选的。运行时为您处理了很多事情,而且更易于维护。对于某些任务来说,跨越边界可能会有问题。例如,您还将失去代码访问安全性。有一些好消息
如果你不这样做,那么你总是需要一个.NET开发者和一个C++开发者来维护它。 c++/本机代码本身并没有什么问题,只是混合了两者。我只是觉得长期来说最好不要混在一起,除非你不得不这样做
也就是说,存在时间和预算限制。互操作的存在是有原因的。如果从商业角度来看,这绝对需要太长的时间来证明,我会撤回上述建议 如果我是你,我更喜欢用C#重写Listview,或者寻找一个用C#编写并用于Winforms的免费或付费网格 不要忘记,在完成此项工作后,您必须支持代码, 这可能包括修复bug和添加功能。 最好确切地知道您的代码是如何工作的以及如何调试它。 您还可以编写更适合您需要的Listview <>这将是非常困难的,如果你使用这个C++ ListVIEW,并在WiFrm中使用它。 但如果你决定使用它,我可以想到两个选择:
所以,总结一下,我建议使用一种语言来进行UI代码,而我选择的UI语言是C语言,而不是C++。
好运……/P>我想如果有人要求你从C++到C语言的端口,他们可能不希望移植的版本中有本机代码。唯一的要求是获得Win表单应用程序的外观和感觉。我正在探索如何做到这一点的选择。不太熟悉这一点如何工作?我还需要一个dll吗?对不起,我对它了解不多。请看这里:我明白您对所有必要的编组/清理代码的意思。我考虑互操作的唯一原因是时间和预算。此外,C++版本将继续存在,所以如果我们端口,我们有两个代码基础来维护。这真的取决于你。就个人而言,如果它是我们的代码,我会移植它,但我倾向于移植所有东西。为我们保持代码库的更新意味着以后的维护工作更加容易。但这听起来不是一个问题,我认为你有正当理由使用这个非托管版本,只要没有任何问题。谢谢SHHAR…我开始看到周围的C++版本会有什么混乱。除非我能找到一个免费/付费的电网,否则我将进行移植。我给你答案的支票。