Delphi与.NET的互操作性

时间:2009-02-27 16:52:40

标签: .net delphi

我目前有一个delphi(win32)代码的代码库。我想扩展新的功能,但是,我的知识是在.NET(C#)中,我想保留现有的代码库并在.NET中添加新的功能。

如果有的话,我的选择是什么(对于delphi和.NET互操作)?

谢谢!

5 个答案:

答案 0 :(得分:7)

有几个选择:

  • 可以在程序集中创建和公开.NET类作为COM控件(互操作),以便它可以在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

答案 1 :(得分:7)

我没有使用它,但请查看RemObject Hydra

  

Hydra可轻松混搭   本机Delphi和托管的.NET代码   一个应用程序,允许   开发人员选择最好的一套   技术满足他们的需求。

基本上,您可以在Delphi应用程序中嵌入Visual和非可视.NET代码,并使用它就像Delphi本机一样。他们有一个免费试用版,现在正在进行一场比赛,你可以win a free copy by reviewing the free trial

除此之外,您可以使用.NET via COM in Delphi。 .NET程序集可以是C#,Prism,VB.NET或任何.NET语言。

答案 2 :(得分:2)

您可以使用最新的Delphi Prism(即2009)编译.NET的Delphi代码。可以用Delphi文件制作.NET程序集,并使用常规C#扩展这些类。

如果你的课程是密封的,你也可以使用扩展方法。

答案 3 :(得分:0)

我相信Delphi,从几个版本开始,都有.NET编译。

http://www.codegear.com/products/bds2006

“除了Delphi Win32和Delphi for .NET编程语言之外,Developer Studio 2006还包括对C和C#的完整RAD支持。”

答案 4 :(得分:0)

你可以看看here,他们为Delphi.Net生成一个编译器。这可能是一种前进的方式。