Вы можете через COM + и делать почти все в VFP, однако у вас есть проблемы с безопасностью через Admin Tools, Component Services.
Вы можете создавать как однопоточные, так и многопоточные DLL.
После регистрации и информации о типе библиотеки «Добавить ссылку» в приложение C # (или другое) вы можете вызывать функции с любыми необходимыми параметрами. Есть много вещей, которые вы можете вернуть обратно, но обычно таблицы, которые я отправляю обратно как XML (через класс FoxAdapter XMLAdapter), затем преобразуем поток в таблицу один раз в C #. Прошло много времени с тех пор, как я работал таким образом, но это дало огромную гибкость, поскольку вы можете выполнять свои запросы, циклы сканирования и другие сложные условные проверки и обновления курсора до генерации XML и возврата его в виде строки. *
DEFINE CLASS YourClass as CUSTOM OLEPUBLIC
FUNCTION GetMyData( lcSomeString as String)
select * from (YourPath + "SomeTable" ) where ... into cursor C_SomeCursor readwrite
.. any other manipulation, testing, etc...
oXML = CREATEOBJECT( "xmladapter" )
lcXML = ""
oXML.AddTableSchema( "C_SomeCursor" )
oXML.ToXML( "lcXML", "", .f. )
return lcXML
ENDFUNC
ENDDEFINE