IDisposable: typings say `dispose()`, dynamic binding exposes `Dispose()`
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 82/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- csharp, javascript, typescript
Direção de pesquisa
Start with the cited generator code in src/NodeApi.Generator/TypeDefinitionsGenerator.cs around lines 1217-1221 and the dynamic exporter in src/NodeApi.DotNetHost/TypeExporter.cs around lines 790-797. Reproduce the issue with the provided net472 dynamic-binding example, then verify that generated typings and runtime method names agree for IDisposable; done means calling the typed method no longer fails.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
With dynamic binding (require("node-api-dotnet/net472") then dotnet.load("MyLib.dll")), a class that implements IDisposable gets dispose(): void in the generated .d.ts, but the object at runtime has Dispose and no dispose. Calling the typed name throws TypeError: x.dispose is not a function. TypeScript accepts the call, and a test mock written from the .d.ts passes, so the mismatch only surfaces in production.
Reproduced with node-api-dotnet 0.9.27 and a net472 host:
const t = dotnet.MyLib.Thing.Create();
Object.getOwnPropertyNames(Object.getPrototypeOf(t));
// [..., "Dispose", "Equals", "GetHashCode", "GetType", "ToString", ...]
typeof t.dispose; // "undefined"
The generator renames the method to match the JS convention: https://github.com/microsoft/node-api-dotnet/blob/958b8c3c04dff5414781a88f069062c6528f7427/src/NodeApi.Generator/TypeDefinitionsGenerator.cs#L1217-L1221
The dynamic exporter registers methods under the .NET name with no equivalent rename: https://github.com/microsoft/node-api-dotnet/blob/958b8c3c04dff5414781a88f069062c6528f7427/src/NodeApi.DotNetHost/TypeExporter.cs#L790-L797
Either name is fine, but the two paths should agree.
- Linguagem predominante
- C#
- Estrelas
- 783
- Forks
- 80
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de microsoft/node-api-dotnet
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
microsoft/node-api-dotnet#484 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
microsoft/node-api-dotnet#481 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
microsoft/node-api-dotnet#486 · 1 comentário ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
microsoft/node-api-dotnet#483 · 1 comentário · 1 reação ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
microsoft/node-api-dotnet#479 ·
Todas as issues de microsoft/node-api-dotnet
Issues semelhantes
-
Money ExploitsAbertaS: Untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
project-wayfarer/wayfarer-14#1628 ·
Mantenedores costumam responder em até 3 dias
-
:watch: Not Triaged dotnet-target-version
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
copilot documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 2 dias
-
untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
dotnet/dotnet-api-docs#13124 ·
Mantenedores costumam responder em até 1 dia
-
agentic-workflows
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia