2009-09-08 6 views
2

Quelqu'un peut-il me dire la meilleure façon d'appeler le code FoxPro 9 à partir d'une application .Net 3.51? J'ai une application de production héritée qui est écrite dans Fox 9. Je veux exposer autant de la logique et des processus d'affaires que je peux pour que je puisse le réutiliser à partir de .Net. Idéalement, je veux le faire d'une manière qui le rend invisible à l'application .Net afin que je puisse changer le code de Fox et le remplacer par le code .Net plus tard. Je pensais que je pouvais juste construire une DLL COM dans Fox et ensuite la référencer à partir de mon projet .Net mais je n'ai pas de joie avec ça (différentes erreurs dans Visual Studio quand je compile). Ai-je manqué un truc ici ou dois-je faire quelque chose comme construire un service web Fox?L'appel du code FoxPro à partir de .Net

Répondre

2

J'ai eu la chance dans le passé en prenant la classe foxpro je blême d'exposer et d'en faire hériter de l'objet Session -

DEFINE CLASSE B AS SESSION OLEPUBLIC

ensuite construire la DLL foxpro et l'enregistrer avec la commande RegSvr32. Ensuite, dans Visual Studio, l'objet COM doit apparaître sous l'onglet COM lorsque vous ajoutez des références à votre projet.

1

Il y a plusieurs mois, j'avais l'habitude de créer des classes FoxPro en tant que Com. Comme Kragan a suggéré de les rendre OLEPUBLIC et il exposera les méthodes. Pour l'autorisation, je les ai ajoutées à Com + (sous Vista/Windows 7 sous C: \ Windows \ System32 \ comexp.msc)

Ensuite, dans .Net en utilisant FoxProCom; (Point à la com Com +)

// Connexion à Com (en utilisant Com FoxPro (Nom du projet - voir Information sur le projet) et Nom de la classe type = TypeObjet Type.GetTypeFromProgID ("FoxProComProj.FoxProComClass", Environment.MachineName. ToString(), true);

// Activer Com objet oDComObject = Activator.CreateInstance (TypeObjet);

// Instancier Com FoxProCom.FoxProComClass oFoxCom = (FoxProCom.FoxProComClass) oDComObject;

oFoxCom.UseaOLECl ass()

// Effacer Com oFoxCom = null;

Questions connexes