A conversão do RCW para uma interface InterfaceIsIInspectable
gera a PlatformNotSupportedException
A conversão de um RCW (Runtime Callable Wrapper) em uma interface marcada como InterfaceIsIInspectable agora gera um PlatformNotSupportedException. Essa alteração é um acompanhamento da remoção do suporte do WinRT do .NET.
Versão introduzida
.NET 5
Descrição das alterações
Em versões anteriores do .NET, a conversão de um RCW em uma interface marcada como InterfaceIsIInspectable funcionava conforme o esperado. Do .NET 5 em diante, a conversão de um RCW em uma interface marcada como InterfaceIsIInspectable gera uma PlatformNotSupportedException em tempo de conversão.
Motivo da alteração
O suporte para InterfaceIsIInspectable foi removido. Como o suporte subjacente no runtime não existe mais, gerar uma PlatformNotSupportedException habilita um caminho de falha normal. Gerar uma exceção também torna mais evidente que esse recurso não tem mais suporte.
Ação recomendada
Se você puder definir a interface em um arquivo WinMD (metadados de runtime do Windows), use a ferramenta C#/WinRT.
Caso contrário, marque a interface como InterfaceIsIUnknown em vez de InterfaceIsIInspectable e adicione três entradas fictícias ao início da interface para os métodos InterfaceIsIInspectable. O snippet de código a seguir mostra um exemplo.
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IMine { // Do not call these three methods. // They're exclusively to fill in the slots in the vtable. void GetIIdsSlot(); void GetRuntimeClassNameSlot(); void GetTrustLevelSlot(); // The original members of the IMine interface go here. ... }
APIs afetadas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de