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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour