该问题的基本前提似乎是围绕 Delphi 核心的 C# 包装器更易于维护和运行,如果这不是真的,那么创建包装器的想法就变得不是很有用。我认为这是一个错误的概念。
想象一下,我做了一个可以与望远镜对话的应用程序。它完美地做到了。在这种情况下,我可以只提取望远镜通信部分并将其放入 DLL 中,然后用 C# 编写一个用户界面,使用 Delphi DLL 来执行与望远镜通信的任务。但是,除非您的 Delphi 应用程序已经以一种很好的方式构建,并且除非已经存在像这个望远镜通信库这样的任务,否则您将发现提取 Delphi 应用程序的任何部分并从 C# 中使用它并不容易。如果存在这种情况,我将使用本机 Delphi DLL 函数导出并从 C# 调用它们。这不使用现有的 delphi 可执行文件,并且需要花费大量时间将 Delphi 应用程序的一部分重构为可以从 C# 中使用的东西。
另一个答案提到了 COM 服务器,虽然这是可能的,但它不会让事情变得更容易;就像关于正则表达式的老笑话一样;当您遇到问题并尝试使用正则表达式解决时,现在您遇到了两个问题。当您尝试使用 COM 服务器来隐藏现有应用程序并使用 C# 在其上编写全新的 UI 时,情况也是如此。实际上,以这种方式改进、调试和继续开发它需要更多的技术技能,而不是纯粹用 delphi 或纯粹用 C# 继续开发它。这是一种消极的努力。
您没有提供有关 Delphi 应用程序做什么的信息,但我们假设它是一个业务线或垂直市场应用程序,它读取某种文件格式,或执行某种通信协议,甚至连接到您不知道的某个旧数据库不想重写。
如果通过制作 C# UI 的意思是永远不要显示 Delphi 应用程序用户界面并用 C# 替换它,那么几乎可以肯定你的想法不会让任何事情变得更好,只会让事情变得更糟。您的僵局要么来自没有熟练的 delphi 开发人员,要么来自没有聪明的开发人员能够弄清楚现有应用程序的功能。
在这种情况下,解决方案通常是人工解决方案;要么聘请熟练的 delphi 开发人员并将应用程序带入现代 Delphi 时代(Delphi XE2),要么聘请熟练的非 delphi 开发人员并将应用程序移植到其他语言。任何建议在 delphi 应用程序之上编写“包装器”并认为这会使其“更容易”的人显然无法重写现有应用程序。
可以肯定的是,我对您的 delphi 应用程序的功能知之甚少,但在我看来,这听起来确实像是“恐惧驱动”的决定。包装旧代码几乎从来都不是一个好主意,而且通常只会产生更多问题。