Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A conversão do RCW para uma interface
A conversão de um RCW (Runtime Callable Wrapper) em uma interface marcada como InterfaceIsIInspectable agora gera um PlatformNotSupportedException. Essa alteração é uma continuação da remoção do suporte do WinRT no .NET.
Versão introduzida
.NET 5
Descrição da alteração
Nas versões anteriores do .NET, a conversão de um RCW em uma interface marcada como InterfaceIsIInspectable funcionava como 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 detectável que esse recurso não tenha 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 InterfaceIsIInspectablee adicione três entradas fictícias ao início da interface para os InterfaceIsIInspectable métodos. 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. ... }