visual-foxpro
VFP Interop med .NET
Sök…
Introduktion
Detta ämne kommer att täcka interop mellan VFP och .NET.
Använd wwDotNetBridge för att köra .NET-kod
Med hjälp av West Winds wwDotNetBridge kan du enkelt få åtkomst till .NET-kod i ett VFP-program.
Vitboken har alla detaljer, men detta kortfattade exempel hjälper till att illustrera de grundläggande stegen för att köra en metod i en .NET-enhet.
Observera att wwDotNetBridge direkt kan komma åt enkla egenskaper som strängar, ints, etc. För att få tillgång till mer komplicerade strukturer som listor, måste du först använda wwDotNetBridge-funktionen CreateArray för att konvertera .NET-strukturen till en VFP COM-array (som visas på nedre delen av detta exempel).
*!* Load WestWind .NET wrapper library (wwdotnetbridge.prg assumed to be in the search path)
IF (!wwDotNetBridge())
RETURN .F.
ENDIF
lowwDotNetBridge = CREATEOBJECT("wwDotNetBridge","V4")
*!* Load .NET Assembly (include full or relative path if necessary)
IF !lowwDotNetBridge.LoadAssembly("SomeDotNetAssembly.dll")
lcAssemblyLoadError = "LoadAssembly error: " + lowwDotNetBridge.cErrorMsg
=MESSAGEBOX(lcAssemblyLoadError, MB_ICONSTOP, "Error")
RETURN .F.
ENDIF
*!* Parameters to pass to class constructor
*!* You can pass up to 5 paramenters to the constructor
lcParameter1 = "StringParameter1"
lcParameter2 = "StringParameter2"
lnParameter3 = 3
lcParameter4 = .NULL.
*!* Get an instance of the assembly class
loAssemblyReference = lowwDotNetBridge.CreateInstance("MyDotNetProject.MyDotNetClass", ;
lcParameter1, lcParameter2, lnParameter3, lcParameter4)
IF lowwDotNetBridge.lError
lcAssemblyLoadError = "An error occurred loading the class: " + lowwDotNetBridge.cErrorMsg
RETURN .F.
ENDIF
*!* Usage Example
*!* This example runs a method that return a boolean
*!* and populates a List<string> (SomeStringList).
*!*
*!* The assembly has a public property named "LastErrorMessage"
*!* with details about any handled exceptions/problems.
IF (!loAssemblyReference.SomePublicMethod())
msg = "There was a problem executing the method:" + CRLF + ;
loAssemblyReference.LastErrorMessage
=MESSAGEBOX(msg, MB_ICONSTOP, "Error")
RETURN .F.
ENDIF
*!* At this point the string list (SomeStringList) should be populated
*!* wwDotNetBridge can convert that list to a VFP COM array (0-based)
laVFPArrayOfStrings = lowwDotNetBridge.CreateArray()
laVFPArrayOfStrings.FromEnumerable(loAssemblyReference.SomeStringList)
FOR x = 0 TO laVFPArrayOfStrings.Count-1
? laVFPArrayOfStrings.Item(x)
ENDFOR
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow