CA1408: Non utilizzare AutoDual ClassInterfaceType
Articolo | Valore |
---|---|
ID regola | CA1408 |
Category | Microsoft.Interoperability |
Modifica | Interruzione |
Causa
Un tipo visibile COM (Component Object Model) è contrassegnato con l'attributo ClassInterfaceAttribute impostato sul AutoDual
valore di ClassInterfaceType.
Descrizione regola
I tipi che utilizzano un'interfaccia duale consentono l'associazione dei client a uno specifico layout di interfaccia. Eventuali modifiche apportate in una versione futura al layout del tipo o ai tipi base interromperanno l'associazione dei client COM all'interfaccia. Per impostazione predefinita, se l'attributo ClassInterfaceAttribute non è specificato, viene usata un'interfaccia solo dispatch.
Se non contrassegnato diversamente, tutti i tipi non generici pubblici sono visibili a COM; tutti i tipi non pubblici e generici sono invisibili a COM.
Come correggere le violazioni
Per correggere una violazione di questa regola, modificare il valore dell'attributo ClassInterfaceAttribute impostando il None
valore di ClassInterfaceType e definendo in modo esplicito l'interfaccia.
Quando eliminare gli avvisi
Non eliminare un avviso da questa regola, a meno che non sia certo che il layout del tipo e i relativi tipi di base non cambieranno in una versione futura.
Esempio
Nell'esempio seguente viene illustrata una classe che viola la regola e una dichiarazione di nuovo della classe per l'uso di un'interfaccia esplicita.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
// This violates the rule.
[ClassInterface(ClassInterfaceType.AutoDual)]
public class DualInterface
{
public void SomeMethod() {}
}
public interface IExplicitInterface
{
void SomeMethod();
}
[ClassInterface(ClassInterfaceType.None)]
public class ExplicitInterface : IExplicitInterface
{
public void SomeMethod() {}
}
}
Regole correlate
CA1403: I tipi layout automatici non devono essere visibili a COM
CA1412: Contrassegnare le interfacce ComSource come IDispatch
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per