c++ - Qt C++ 项目中 Xamarin 项目代码的可重用性

标签 c++ linux qt xamarin mvvm

我有一个简单的应用程序,是在 Xamarin 中为移动设备和 Windows 桌面开发的。在其开发过程中,使用了 C#、(Galasoft) MVVM-Light 和存储库模式。后端不是该项目的一部分。但为了获得完整的画面,需要使用 REST 端点。

现在我问自己,如果我想用 Qt 和 C++ 编写相同的应用程序(针对 Linux),可以使用之前的项目中的哪些内容。到目前为止我知道:

  • View 必须完全重写,因为 Qt 使用“qml”而不是 XAML
  • 此外,Qt 并不像 MVVM/C#/XAML 中那样使用“绑定(bind)”。但有一些替代方法,发现here
  • 模型应该相对易于重用。

为了最大限度地减少代码的“重写”部分,我还找到了一个 C# 到 C++ 的包装器,但到目前为止仅适用于方法,而不适用于整个类。看看你自己 here

如果我的陈述在某些方面有误,是否有人有进一步的提示或可以纠正我的陈述?

感谢您的支持

最佳答案

根据经验,我最好的建议是避免尝试使用现有代码,而是使用 C++/Qt 从头开始​​编写新应用程序。您已经拥有一个应用程序可能很诱人,但尝试移植它可能比简单地重写它更痛苦,而且您还将错过从 Qt 的强大功能中受益的机会。例如,QML 的声明性性质没有明确的对应物,您肯定希望充分利用它。

唯一的异常(exception)是,如果您(就像您所说的那样)有一个非常独立的库部分,您将可以轻松地包装和重用它。但即便如此,这也会成为构建时的负担。我发现将整个代码库保留在 C++/Qt5 中会使构建和部署变得非常简单和优雅。 Qt 附带的工具,例如 qmakeqbsQtCreator 非常适合跨平台。

除此之外,还有一些评论:

希望这对您有帮助!

关于c++ - Qt C++ 项目中 Xamarin 项目代码的可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951768/

相关文章:

c++ - 将[N]下的所有幸运数字添加到 vector 的算法?

c++ - Qt:如何将parent设置为其子类的成员变量?

c++ - C++/Qt - 内存分配如何工作?

c++ - QVariant 无法区分 QDateTime 和 QString

c++ - 如何在新的 C++ Mongo 驱动程序中使用光标

c++ - 动态捕获 CPU 和内存使用情况

linux - 为什么循环内变量递减不返回成功状态代码?

python - 如何从不同的终端向在 linux 的终端窗口上运行的 python 程序提供 raw_input,所有这些都在同一个 UNIX 上运行

c++ - 使用带有 QObject 的类的编译器错误 "collect2: Id returned 1 exit status"(带有 Qt Creator 的 QT 4.7)

为init运行python文件的Linux内核