Nõuded: Eelmine artikkel kirjutas, kuidas rakendada veebiliidest ja WinFormi rakendust, et omavahel sõnumeid saata, kuid ainult sõnum saadeti edukalt ning vastuseinfot ei õnnestunud saada. Mis siis, kui C# klient kutsub veebist funktsioonimetoodi, et saada tagastustulemus? Ja kuidas veeb kutsub C# koodi ja saab tagastusväärtuse?
Läbivaatamine:
Esmalt vaatame rakenduse renderdusi, veebileht kutsub WinFormi rakendustHangi lõikelaua andmed, WinForm rakendusHelistage veebis abc meetodile, et saada tootlusväärtusJärgmiselt:
C# kutsub veebifunktsiooni meetodit
See stsenaarium näitab, kuidas JavaScripti veebis käivitada. Selles meetodis määrab hostrakendus JavaScripti koodi, mida käivitada, ja edastab koodi veebi ExecuteScriptAsync abil. ExecuteScriptAsync funktsioon tagastab JavaScripti tulemuse ExecuteScript kutsujale.
Angular index.html lehekülje kood on järgmine:
Frontend määratleb peamiselt abc funktsiooni.
Winform kutsub veebi abc funktsiooni järgmise koodiga:
Veebileht kutsub C# funktsiooni meetodit
Natiivsete objektide edastamine veebile. Seejärel kutsutakse välja meetod objekti kutsumiseks veebist.
Et kasutada sõnumit, mis esindab meetodikutset, kasuta AddHostObjectToScript API-d. Kõrgel tasemel võimaldab see API natiivsetel (host)objektidel veebis olla avatud ja toimida proksidena. Kasuta window.chrome.webview.hostObjects. {name}>a0> pääseb neile objektidele ligi. Viitedokumentatsioon:Hüperlingi sisselogimine on nähtav.
Loo veebilehel uus nupp, klõpsa nuppu, et kutsuda C# koodi, et saada süsteemi praeguse lõikelaua andmed.
Angular app.component.html kood on järgmine:
app.component.ts kood on järgmine:
Front-end JS-kood sisaldab sünkroonseid ja asünkroonneid kõnesid.
c# defineeri WebView2HostObject hostobjekti järgmise koodiga:
Märkus: Kohandatud WebView2HostObject klassid peavad olema märgistatud[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]omadus, muidu JS ei pääseks klassile ligi.
Seejärel lisa uus defineeritud eksemplar AddHostObjectToScript(String,Object) kaudu järgmise koodiga:
Lõpuks, klõpsa esiküljel olevale nupule, et saada lõikelaua andmed, efekt on järgmine:
(Lõpp)
|