Freigeben über


Vermeiden von nicht öffentlichen Feldern in ComVisible-Werttypen

Aktualisiert: November 2007

     TypeName

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

Kategorie

Microsoft.Interoperability

Unterbrechende Änderung

Breaking

Ursache

Ein Werttyp, der ausdrücklich als für COM sichtbar markiert ist, deklariert ein nicht öffentliches Instanzenfeld.

Regelbeschreibung

Nicht öffentliche Instanzenfelder von ComVisible-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 Design oder Sicherheitsrisiko haben.

Standardmäßig sind alle öffentlichen Werttypen für COM sichtbar. Um jedoch die Anzahl falscher positiver Ergebnisse zu verringern, muss entsprechend der Regel die COM-Sichtbarkeit des Typs explizit angegeben werden, die enthaltende Assembly muss mit dem auf false festgelegten System.Runtime.InteropServices.ComVisibleAttribute-Attribut markiert sein, und der Typ muss mit dem auf true festgelegten ComVisibleAttribute-Attribut markiert sein.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben und dafür zu sorgen, dass das Feld ausgeblendet bleibt, ändern Sie den Werttyp für einen Verweistyp oder entfernen das ComVisibleAttribute-Attribut von dem Typ.

Wann sollten Warnungen unterdrückt werden?

Warnungen dieser Regel können gefahrlos unterdrückt werden, wenn das öffentliche Verfügbarmachen des Feldes zulässig ist.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen die Regel verstößt.

Imports System
Imports System.Runtime.InteropServices

<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary

   <ComVisibleAttribute(True)> _ 
   Public Structure SomeStructure

      Friend SomeInteger As Integer

   End Structure

End Namespace
using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   [ComVisible(true)]
   public struct SomeStruct
   {
      internal int SomeValue;
   }
}

Verwandte Regeln

Statische Member in für COM sichtbaren Typen vermeiden

Markieren von Assemblys mit dem ComVisible-Attribut

Siehe auch

Konzepte

Qualifizieren von .NET-Typen für die Interoperation

Weitere Ressourcen

Interaktion mit nicht verwaltetem Code