CA1405: Tipos base de tipo visível no COM devem ser visíveis no COM
Item | Valor |
---|---|
RuleId | CA1405 |
Categoria | Microsoft.Interoperability |
Alteração da falha | DependsOnFix |
Causa
Um tipo visível no COM (Component Object Model) deriva de um tipo que não é visível no COM.
Descrição da regra
Quando um tipo COM visível adiciona membros em uma nova versão, ele precisa cumprir diretrizes rígidas para evitar a interrupção de clientes COM que se associam à versão atual. Um tipo invisível no COM presume que ele não precisa seguir essas regras de controle de versão COM quando adiciona novos membros. No entanto, se um tipo visível no COM deriva do tipo invisível no COM e expõe uma interface de classe de System.Runtime.InteropServices.ClassInterfaceType ou ClassInterfaceType (o padrão), todos os membros públicos do tipo base (a menos que sejam especificamente marcados como invisíveis no COM, o que seria redundante) serão expostos ao COM. Se o tipo base adicionar novos membros em uma versão subsequente, todos os clientes COM que se associam à interface de classe do tipo derivado poderão ser interrompidos. Os tipos visíveis no COM devem derivar apenas de tipos visíveis no COM para reduzir a chance de interrupção de clientes COM.
Como corrigir violações
Para corrigir uma violação dessa regra, torne os tipos base visíveis no COM ou o tipo derivado invisível no COM.
Quando suprimir avisos
Não suprima um aviso nessa regra.
Exemplo
O seguinte exemplo mostra um tipo que viola a regra.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(false)]
public class BaseClass
{
public void SomeMethod(int valueOne) {}
}
// This class violates the rule.
[ComVisible(true)]
public class DerivedClass : BaseClass
{
public void AnotherMethod(int valueOne, int valueTwo) {}
}
}
Confira também
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