CA1405: Für COM sichtbare Basistypen sollten für COM sichtbar sein.
Element | Wert |
---|---|
RuleId | CA1405 |
Category | Microsoft.Interoperability |
Unterbrechende Änderung | DependsOnFix |
Ursache
Ein sichtbarer COM-Typ (Component Object Model) wird von einem Typ abgeleitet, der nicht für COM sichtbar ist.
Regelbeschreibung
Wenn ein sichtbarer COM-Typ in einer neuen Version Member hinzufügt, muss er sich an strenge Richtlinien halten, damit COM-Clients, die an die aktuelle Version gebunden sind, nicht beeinträchtigt werden. Ein Typ, der für COM nicht sichtbar ist, setzt voraus, dass er diese COM-Versionierungsregeln nicht befolgen muss, wenn er neue Member hinzufügt. Wenn jedoch ein sichtbarer COM-Typ vom nicht sichtbaren COM-Typ abgeleitet wird und eine Klassenschnittstelle von System.Runtime.InteropServices.ClassInterfaceType oder ClassInterfaceType (Standard) aufweist, werden alle öffentlichen Member des Basistyps (es sei denn, sie sind ausdrücklich als nicht für COM sichtbar gekennzeichnet, was überflüssig wäre) für COM sichtbar. Wenn der Basistyp in einer späteren Version neue Member hinzufügt, können alle COM-Clients, die an die Klassenschnittstelle des abgeleiteten Typs gebunden sind, nicht mehr funktionieren. Für COM sichtbare Typen sollten nur von für COM sichtbaren Typen abgeleitet werden, um die Wahrscheinlichkeit zu verringern, dass COM-Clients beschädigt werden.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, machen Sie die COM-Basistypen sichtbar oder den abgeleiteten COM-Typ nicht sichtbar.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Das folgende Beispiel zeigt einen Typ, der gegen die Regel verstößt.
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) {}
}
}
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für