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