microsoft / microsoft/node-api-dotnet

How do I export a C# function with a `JSValue` argument?

Aperta
#414 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

@jasongin ci sta già lavorando.

Dal 10/1/2025.

Lingua principale
C#
Stelle
783
Fork
80
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

As per issue title, I'm trying to export a C# class method using TypeExporter.ExportType, but the method is not exported due to the following check, which explicitly disallows JSValue argument types and causes the method to be skipped:

https://github.com/microsoft/node-api-dotnet/blob/a150c53280dbbdebbc51cb84d7384fa3f9313e4b/src/NodeApi.DotNetHost/TypeExporter.cs#L1026-L1028

The method has the following signature:

public async Task<JSValue> sendMessage(JSValue parameters)

The purpose of the C# function is:

  • to call JSON.stringify
  • parse the result with System.Text.Json
  • execute some C# code,
  • serialize the result with System.Text.Json
  • call JSON.parse again to return the result to nodeJS.

(I know, the JSON round-trip could be removed in the future by creating a DTO type, but the JSON data currently has a dynamic structure and needs some work)

Changing the signature to a string and using JSON.stringify in NodeJs is a workaround to make the method appear, but I'd like to pass a JSON object directly.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.