我目前有一个delphi(win32)代码的代码库.我想扩展新功能,但是,我的知识是在.NET(C#)中,我想保留现有的代码库并在.NET中添加新功能.
如果有的话,我的选择是什么(对于delphi和.NET互操作)?
谢谢!
有几个选择:
可以在程序集中创建和公开.NET类作为COM控件(interop),以便它可以在Delphi中使用.
Delphi是.Net一段时间(但它不是Delphi最亮的时刻),所以以Delphi 2006为例,你可以使用Delphi作为.Net语言.但是,如果不是这样,任何其他Delphi版本的更改,与旧的源代码不兼容.
编辑 要执行第一种方法,您需要使用.NET语言创建具有所需类/功能的程序集并进行编译.你应该最终得到一个DLL.
在Delphi的"组件"菜单下,选择"导入组件"(它应位于"安装包"下面).你会得到一个应该有3个无线电选项的向导
导入类型库
导入ActiveX控件
导入.NET程序集
选择第三个,您将看到全局注册的程序集列表.由于您的程序集只是一个匿名DLL,请单击底部附近的"添加",然后在打开的对话框中选择DLL.
在下一页,您将被要求提供调色板信息.在这里您可以选择 - 指定您的项目文件夹并取消选中"生成组件包装",仅将程序集添加到项目中.另一种选择是将它放在lib或其他全局文件夹中并检查包装器选项,它将把它添加到所有项目的工具选项板中.
最后一个屏幕将询问您是否要将其添加到当前项目中(取决于您是将全局添加还是仅添加到一个项目).
完成所有操作后,您应该能够在Delphi中创建.Net类的实例,如下所示:
var MyCSharpClassInstance: TMyCSharpClassProvider; begin MyCSharpClassInstance:=CoTMyCSharpClassProvider.Create; … MyCSharpClassInstance.Free; End
我还没用过它,但请查看RemObject Hydra.
Hydra使得在单个应用程序中轻松混合和匹配原生Delphi和托管.NET代码,允许开发人员根据自己的需求选择最佳技术.
基本上,您可以在Delphi应用程序中嵌入Visual和非可视.NET代码,并使用它就像Delphi本机一样.他们有一个免费试用版,现在有一个比赛正在运行,你可以通过审查免费试用版赢得免费副本.
除此之外,您可以在Delphi中通过COM使用.NET..NET程序集可以是C#,Prism,VB.NET或任何.NET语言.