Udostępnij za pośrednictwem


CA1413: Uniknąć publiczno-pola typów wartości widoczne COM

TypeName

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

Kategoria

Microsoft.Interoperability

Zmiana kluczowa

Kluczowa

Przyczyna

Typ wartości, który jest wyraźnie oznaczony jako widoczny dla modelu Component Object Model (COM) deklaruje pole niepubliczne wystąpienia.

Opis reguły

Pola niepubliczne wystąpień typów wartości widocznych dla modelu COM są widoczne dla klientów COM.Przejrzyj zawartość pola w poszukiwaniu informacji, które nie powinny być odsłonięte lub spowodują niezamierzony efekt projektowy lub w dziedzinie zabezpieczeń.

Domyślnie wszystkie publiczne typy wartości są widoczne dla modelu COM.W celu zmniejszenia wyników fałszywie dodatnich, ta reguła wymaga jawnego podania widzialności COM dla typu.Zestaw zawierający musi zostać oznaczony System.Runtime.InteropServices.ComVisibleAttribute ustawiony na false a typ musi zostać oznaczony ComVisibleAttribute ustawionym na true.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady i zachować pole ukryte, zmień typ wartości na typ odwołania lub usuń atrybut ComVisibleAttribute z typu.

Kiedy pominąć ostrzeżenia

Bezpiecznie można pominąć ostrzeżenie od tej reguły, jeśli jest dopuszczalne publiczne ujawnienie pola.

Przykład

Poniższy przykład pokazuje typ, który narusza reguły.

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;
   }
}

Powiązane reguły

CA1407: Uniknąć elementy statyczne w typach widoczne COM

CA1017: Znak zespołów o ComVisibleAttribute

Zobacz też

Koncepcje

Kwalifikujące się.Typy sieci współpracy

Inne zasoby

Współdziałanie z kodu niezarządzanego