Me gustaría llamar a la función JS desde Blazor (este es el método de fábrica) y luego devolver el objeto obtenido a JS (otra función).
El problema es que Blazor cambia el objeto, por lo que cuando imprimo los datos del objeto devuelto (en la primera función) y el objeto obtenido en la segunda función, puedo ver que la estructura es diferente.
No quiero modificar ni leer este objeto en Blazor de ninguna manera, solo obtener + pasar, eso es todo.
Actualización : lea el comentario de KirkWoll para una reformulación más técnica. Actualmente llamo a la función JS como await jsRuntime.InvokeAsync<object>(... pero no funciona (como se esperaba).
C# -- Estándar neto 2.0.
Demostración y solución
Creé este simple Blazor Fiddle (WASM 3.1) que lee un objeto JavaScript y luego lo vuelve a escribir. Y si ve la salida en la consola del navegador, puede ver que el objeto se pasa de un lado a otro con las propiedades intactas.
Sin embargo, la función se elimina del objeto. Y eso es porque el objeto se pasa como json y json solo tiene propiedades. Entonces solo es posible enviar propiedades.
OP también prueba si el objeto devuelto es el mismo que el objeto global almacenado. Sin embargo, eso será falso porque estos son casos diferentes. Las propiedades pueden ser iguales, pero no las referencias.
una solución
Si el requisito es pasar el objeto por referencia de una función de JavaScript a otra, la solución sería crear una función de JavaScript para hacer esto directamente sin pasar el objeto a Blazor. Básicamente, solo una función que activa la llamada. La solución está incluida en el violín.