CA1405 : Les types de base type visibles par COM doivent être visibles par COM

Élément Valeur
ID de la règle CA1405
Category Microsoft.Interoperability
Modification avec rupture DependsOnFix

Cause

Un type visible par COM (Component Object Model) dérive d’un type qui n’est pas visible par COM.

Description de la règle

Lorsqu’un type visible par COM ajoute des membres dans une nouvelle version, il doit respecter des instructions strictes pour éviter d’interrompre les clients COM qui se lient à la version actuelle. Un type invisible pour COM suppose qu’il n’a pas besoin de suivre ces règles de contrôle de version COM lorsqu’il ajoute de nouveaux membres. Toutefois, si un type visible par COM dérive du type invisible par COM et expose une interface de classe de System.Runtime.InteropServices.ClassInterfaceType ou ClassInterfaceType (la valeur par défaut), tous les membres publics du type de base (sauf s’ils sont spécifiquement marqués comme invisible par COM, ce qui serait redondant) sont exposés à COM. Si le type de base ajoute de nouveaux membres dans une version ultérieure, tous les clients COM qui se lient à l’interface de classe du type dérivé peuvent s’interrompre. Les types visibles par COM doivent dériver uniquement des types visibles par COM pour réduire le risque d’interruption des clients COM.

Comment corriger les violations

Pour corriger une violation de cette règle, rendez les types de base visibles par COM ou le type dérivé invisible par COM.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’exemple suivant montre un type qui enfreint la règle.

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) {}
   }
}

Voir aussi