CA1413: избегайте использования не открытых полей в видимых типах значений COM
TypeName |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
Категория |
Microsoft.Interoperability |
Критическое изменение |
Критическое изменение |
Причина
Тип значения, специально помеченный как отображаемый для COM, объявляет закрытое поле экземпляра.
Описание правила
Не являющиеся общедоступными поля экземпляров типов значений, отображаемых для модели COM, отображаются для COM-клиентов.Проверьте содержимое полей на наличие сведений, к которым не должен предоставляться доступ или которые могут оказать непреднамеренное воздействие на разработку или безопасность.
По умолчанию все открытые типы значений отображаются для COM.Тем не менее чтобы уменьшить число ложных положительных результатов, это правило требует видимость COM для типа, который будет явно указан.Содержащая сборка должна быть помечена атрибутом ComVisibleAttribute со значением false, и тип должен быть помечен с помощью атрибута ComVisibleAttribute равного true.
Устранение нарушений
Чтобы устранить нарушение данного правила и оставить поле скрытым, измените тип значения на ссылочный или удалите атрибут ComVisibleAttribute из типа.
Отключение предупреждений
Если использование открытого поля допустимо, можно отключить вывод предупреждений для данного правила.
Пример
В следующем примере показан тип, который нарушает данное правило.
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;
}
}
Связанные правила
CA1407: не используйте статические члены в видимых COM типах
CA1017: помечайте сборки атрибутом ComVisibleAttribute
См. также
Основные понятия
Уточнение типов .NET для взаимодействия