Prasības: Iepriekšējā rakstā tika rakstīts par to, kā ieviest tīmekļa saskarni un WinForm lietojumprogrammu, lai sazinātos savā starpā, lai nosūtītu ziņojumus, bet tikai ziņojums tika veiksmīgi nosūtīts, un atbildes informāciju nevarēja iegūt. Ko darīt, ja C# klients izsauc tīmekļa funkciju metodi, lai iegūtu atgriešanās rezultātu? Un kā tīmeklis izsauc C# kodu un iegūst atgriešanas vērtību?
Pārskats:
Pirmkārt, apskatīsim ieviešanas atveidojumus, tīmekļa vietne izsauc WinForm lietojumprogrammuStarpliktuves datu iegūšana, WinForm lietotneIzsauciet tīmekļa metodi abc, lai iegūtu atgriezto vērtībuŠādi:
C# izsauc Web funkcijas metodi
Šis scenārijs parāda, kā palaist JavaScript tīmeklī. Izmantojot šo metodi, resursdatora programma norāda JavaScript kodu, kas jāpalaiž, un nodod kodu tīmeklim, izmantojot ExecuteScriptAsync. Funkcija ExecuteScriptAsync atgriež JavaScript rezultātu ExecuteScript zvanītājam.
Angular index.html lapas kods ir šāds:
Frontend galvenokārt definē abc funkciju.
Winform izsauc tīmekļa funkciju abc ar šādu kodu:
Tīmekļa lapa izsauc C# funkcijas metodi
Vietējo objektu nodošana tīmeklī. Pēc tam tiek izsaukta objekta izsaukšanas metode no tīmekļa.
Lai izmantotu ziņojumu, kas apzīmē metodes izsaukumu, izmantojiet API AddHostObjectToScript. Augstā līmenī šī API ļauj vietējos (resursdatora) objektus pakļaut tīmeklim un darboties kā starpniekserveri. Izmantojiet window.chrome.webview.hostObjects. {name}>a0> piekļūt šiem objektiem. Atsauces dokumentācija:Hipersaites pieteikšanās ir redzama.
Izveidojiet jaunu pogu tīmekļa lapā, noklikšķiniet uz pogas, lai izsauktu C# kodu, lai iegūtu sistēmas pašreizējās starpliktuves datus.
Angular app.component.html kods ir šāds:
app.component.ts kods ir šāds:
Priekšgala JS kodam ir sinhroni izsaukumi un asinhroni zvani.
c# definējiet WebView2HostObject resursdatora objektu ar šādu kodu:
Piezīme: Pielāgotām WebView2HostObject klasēm jābūt atzīmētām[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]rekvizīts, pretējā gadījumā JS nevarētu piekļūt klasei.
Pēc tam pievienojiet jaundefinēto instanci, izmantojot AddHostObjectToScript(String,Object) ar šādu kodu:
Visbeidzot, noklikšķiniet uz pogas priekšgalā, lai iegūtu starpliktuves datus, efekts ir šāds:
(Beigas)
|