Estoy jugando con Webview2 e intenté pasar el objeto JavaScript al método C# del objeto host registrado, pero no sé cómo recuperar su contenido.
public object[] TestCall(string arg1, object arg2) { // arg2.item1 // This don't work // Including arg2 in array will return it back to JavaScript, so it is stored some where return new List<object>() { "item1", "item2", 123, false, arg1, arg2 }.ToArray(); } // await window.chrome.webview.hostObjects.dotNetObject.TestCall("Hello world", { item1: "value1", item2: 1234 });Traté de buscar muestras oficiales de C#, pero ninguna demostró cómo pasar un objeto JavaScript al método de HostObject.
Había solucionado esto usando JSON para intercambiar datos entre C# y JavaScript.
Sin embargo, todavía estoy desconcertado.
Mi pregunta:
¿Cómo paso cualquier objeto de JavaScript al método de HostObject sin convertirlo en JSON?
¿Hay alguna forma de obtener contenido del objeto JS que recibí en arg2 ?
lo que probé
System.Runtime.InteropServices.Marshal.GetIDispatchForObject(arg2); para obtener un puntero.
Pero no se que hacer con el, ya que no tengo conocimientos de COM ni de IDispatch.
Intenté transmitirlo a ExpandoObject , Invalid cast
Intenté convertirlo en dynamic , exitoso, pero ((dynamic)arg2).item1 lanza NotImplementedException