有人能告诉我从.Net 3.51应用程序调用FoxPro 9代码的最佳方法吗?
我有一个用Fox 9编写的遗留生产应用程序。我想尽可能多地暴露逻辑和业务流程,以便我可以从.Net重用它。理想情况下,我希望以一种使.Net应用程序不可见的方式执行此操作,以便我可以切换Fox代码并在以后用.Net代码替换它。
我在想我可以在Fox中构建一个COM DLL,然后从我的.Net项目中引用它,但我对此没有任何乐趣(编译时Visual Studio中的各种错误)。我在这里错过了一个技巧,还是我需要做一些像构建Fox Web服务的东西?
答案 0 :(得分:2)
查看有关VFP转换的这篇文章 - Calling VFP COM components from .Net and ASP.Net - 它应该可以帮助您入门。
答案 1 :(得分:2)
我过去很幸运,参加了我想要公开的foxpro课程并让它继承自Session对象 -
DEFINE CLASS B作为会话OLEPUBLIC
然后构建foxpro DLL并使用RegSvr32命令注册它。然后在Visual Studio中,当您向项目添加引用时,COM对象应显示在COM选项卡下。
答案 2 :(得分:1)
很多以前,我曾经创建过FoxPro类作为Com。正如Kragan建议使它们成为OLEPUBLIC并且它将公开方法。出于权限目的,我曾经将它们添加到Com +(在Vista / Windows 7中,这是在C:\ Windows \ System32 \ comexp.msc下)
然后在.Net 使用FoxProCom; (指向Com +中的com)
//连接到Com(使用FoxPro Com(项目名称 - 请参阅项目信息)和类名称 类型ObjectType = Type.GetTypeFromProgID(“FoxProComProj.FoxProComClass”,Environment.MachineName.ToString(),true);
//激活Com Object oDComObject = Activator.CreateInstance(ObjectType);
//实例化Com FoxProCom.FoxProComClass oFoxCom =(FoxProCom.FoxProComClass)oDComObject;
oFoxCom.UseaOLEClass()
//清除Com oFoxCom = null;