Freigeben über


CA1413: Nicht öffentliche Felder in für COM sichtbaren Werttypen vermeiden.

Element Wert
RuleId CA1413
Category Microsoft.Interoperability
Unterbrechende Änderung Breaking

Ursache

Ein Werttyp, der speziell als für COM (Component Object Model) sichtbar gekennzeichnet ist, enthält ein nicht öffentliches Instanzenfeld.

Regelbeschreibung

Nicht öffentliche Instanzenfelder von COM-sichtbaren Werttypen sind für COM-Clients sichtbar. Überprüfen Sie den Inhalt des Felds auf Informationen, die nicht verfügbar gemacht werden sollen oder unbeabsichtigte Auswirkungen auf Entwurf oder Sicherheit haben.

Standardmäßig sind alle öffentlichen Werttypen für COM sichtbar. Zur Verringerung falsch positiver Ergebnisse erfordert diese Regel jedoch, dass die COM-Sichtbarkeit des Typs ausdrücklich angegeben wird. Für die enthaltende Assembly muss System.Runtime.InteropServices.ComVisibleAttribute auf false festgelegt werden, und für den Typ muss ComVisibleAttribute als true markiert sein.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben und das Feld weiterhin auszublenden, ändern Sie den Werttyp in einen Verweistyp, oder entfernen Sie das Attribut ComVisibleAttribute aus dem Typ.

Wann sollten Warnungen unterdrückt werden?

Eine durch diese Regel ausgelöste Warnung kann gefahrlos unterdrückt werden, wenn es akzeptabel ist, das Feld öffentlich verfügbar zu machen.

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(true)]
   public struct SomeStruct
   {
      internal int SomeValue;
   }
}

CA1407: Statische Member in für COM sichtbaren Typen vermeiden.

CA1017: Assemblys mit ComVisibleAttribute markieren.

Siehe auch