CA1405: I tipi di base del tipo visibile a COM devono essere visibili a COM

Articolo Valore
ID regola CA1405
Category Microsoft.Interoperability
Modifica DependsOnFix

Causa

Un tipo visibile COM (Component Object Model) deriva da un tipo non visibile COM.

Descrizione regola

Quando un tipo visibile COM aggiunge membri in una nuova versione, deve rispettare linee guida rigorose per evitare l'interruzione dei client COM che si associano alla versione corrente. Un tipo invisibile a COM presuppone che non sia necessario seguire queste regole di controllo delle versioni COM quando aggiunge nuovi membri. Tuttavia, se un tipo visibile COM deriva dal tipo invisibile COM ed espone un'interfaccia di classe di System.Runtime.InteropServices.ClassInterfaceType o ClassInterfaceType (impostazione predefinita), tutti i membri pubblici del tipo di base (a meno che non siano contrassegnati specificamente come COM invisibili, che sarebbero ridondanti) vengono esposti a COM. Se il tipo di base aggiunge nuovi membri in una versione successiva, tutti i client COM associati all'interfaccia di classe del tipo derivato potrebbero interrompersi. I tipi visibili COM devono derivare solo dai tipi visibili COM per ridurre la possibilità di interrompere i client COM.

Come correggere le violazioni

Per correggere una violazione di questa regola, rendere visibili i tipi di base COM o il tipo derivato COM invisibile.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

Nell'esempio seguente viene illustrato un tipo che viola la regola.

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

Vedi anche