C# 目标C<-&燃气轮机;单电桥

C# 目标C<-&燃气轮机;单电桥,c#,wpf,objective-c,mono,gtk#,C#,Wpf,Objective C,Mono,Gtk#,我正在考虑编写一个跨平台的桌面应用程序,最初是针对Mac/Windows的,但最终也是针对Linux的 目前,我计划这样组织: 使用Cocoa/Objective C/Interface Builder的Mac UI 使用WPF的Windows用户界面 将来,Linux用户界面将使用GTK# C#中的业务/数据访问层,即Windows上的.NET,Mac/Linux上的Mono 这在Windows上显然是不错的,我非常肯定它在基于GTK应用的Linux/Gnome上也会不错。在Mac上呼叫M

我正在考虑编写一个跨平台的桌面应用程序,最初是针对Mac/Windows的,但最终也是针对Linux的

目前,我计划这样组织:

  • 使用Cocoa/Objective C/Interface Builder的Mac UI
  • 使用WPF的Windows用户界面
  • 将来,Linux用户界面将使用GTK#
  • C#中的业务/数据访问层,即Windows上的.NET,Mac/Linux上的Mono
这在Windows上显然是不错的,我非常肯定它在基于GTK应用的Linux/Gnome上也会不错。在Mac上呼叫Mono,但是。。。我想我有以下选择:

  • (看起来有点死了)
  • (这意味着用C#而不是Objective C编写Mac UI——对此不太感兴趣)
我的问题是:有没有人有过以类似方式构建应用程序的经验?有什么建议吗?我疯了吗

仅供参考-我对桌面UI与主机操作系统“合二为一”非常挑剔,所以我对笨重的WinForms/Java/QT解决方案不感兴趣

无论如何,我是从Mac这边来的,但我认为我的评论是普遍适用的


考虑到您希望使用特定于平台的UI编写应用程序,我认为ObjC#是唯一合理的选择。在Objective-C中实现Mac端UI有很多资源;我认为把你找到的所有建议翻译成Monobjc是浪费你的时间,尤其是当你遇到一个API,它希望你旋转一些指针并传递一个函数句柄,哦,不,你现在怎么办。你可以在应用程序之间共享的唯一东西是模型代码;我假设没有理由尝试在演示文稿中使用相同的语言,除非您认为您无法或无法熟悉Objective-C。

如果有人无意中发现了这一点


看来这将是一条显而易见的前进之路。

我已经在用C#编写的商用桌面Mac应用程序上工作了两年。我们有一个用Objective C编写的库,其中公开了简单的C函数。我们的C#代码Pinvoke转换成简单的C函数

最初,应用程序使用的是MonobjC,但事实证明,MonobjC太难使用。许多Mac API不能很好地转换为C#,或者您需要是Objective C和MonobjC语义方面的专家才能进行简单的函数调用。Objective C的消息传递系统并不总是转换为C#方法调用

当我评估MonoMac时,它不如MonobjC成熟。(编辑:当时MonoMac只有几个月大。现在它成熟多了。)我没有感觉到它比MonobjC有任何真正的改进,除了与MonoTouch的风格和模式保持一致

因此,我强烈建议使用某种形式的PInvoking从C#进入Objective C,或者遵循Embedded Mono指南

你看一看。这是Dumbarton的更新版本,包括一个代码生成器


代码生成器大大减少了直接编写嵌入式API的需要。只需将生成器指向您的托管程序集,并将Obj-C输出集成到您的项目中。

一个类似的问题-看起来Dumbarton链接已失效-我已对其进行了更新。是的,我倾向于同意-我确实有一点Objective C经验,而且我肯定更喜欢在Objective C中构建Mac UI。因此,有没有人有过使用ObjC或Dumbarton的经验,即从Objective C调用Mono CLR来访问用C编译的模型(而不是反过来,这似乎是Monobc/Cocoa的用法)?您好,我想知道您是否有关于从C导入Objective的教程?我已经尝试了一段时间,但没有取得任何成功。先谢谢你