Udostępnij za pośrednictwem


CA1413: Unikaj pól niepublicznych w typach wartościowych widocznych dla modelu 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 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: Unikaj statycznych elementów członkowskich w typach widocznych dla modelu COM

CA1017: Oznacz zestawy za pomocą ComVisibleAttribute

Zobacz też

Koncepcje

Kwalifikowanie typów .NET do międzyoperacyjności

Inne zasoby

Współdziałanie z kodem niezarządzanym