CA1406: не следует использовать аргументы Int64 для клиентов Visual Basic 6
Товар | Значение |
---|---|
Идентификатор правила | CA1406 |
Категория | Microsoft.Interoperability |
Критическое изменение | Критическое |
Причина
Тип, который специально помечен как видимый компонентной объектной модели (COM) объявляет элемент, принимаюющий System.Int64 аргумент.
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Клиенты COM Visual Basic 6 не могут получить доступ к 64-разрядным целым числам.
По умолчанию следующие элементы видны COM: сборки, общедоступные типы, члены общедоступного экземпляра в общедоступных типах и все члены типов общедоступных значений. Однако для уменьшения ложных срабатываний это правило требует явного указания com-видимости типа; Содержащая сборка должна быть помечена набором System.Runtime.InteropServices.ComVisibleAttributefalse
, а тип должен быть помечен набором ComVisibleAttributetrue
.
Устранение нарушений
Чтобы исправить нарушение этого правила для параметра, значение которого всегда может быть выражено как 32-разрядное целочисленное, измените тип параметра на System.Int32. Если значение параметра может быть больше, чем может быть выражено как 32-разрядная целочисленная, измените тип System.Decimalпараметра на . Обратите внимание, что System.Single оба System.Double и теряют точность в верхних диапазонах Int64 типа данных. Если элемент не должен быть видимым для COM, пометьте его с заданным значением ComVisibleAttributefalse
.
Когда лучше отключить предупреждения
Если вы уверены, что клиенты COM Visual Basic 6 не смогут получить доступ к типу, можно отключить предупреждение из этого правила.
Пример
В следующем примере показан тип, нарушающий это правило.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public class SomeClass
{
public void LongArgument(long argument) {}
}
}
Связанные правила
CA1413: избегайте использования не открытых полей в видимых типах значений COM
CA1407: не используйте статические члены в видимых COM типах
CA1017: помечайте сборки атрибутом ComVisibleAttribute
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по