CA1406: Visual Basic 6 클라이언트에서 Int64 인수를 사용하지 않습니다.
항목 | 값 |
---|---|
RuleId | CA1406 |
범주 | Microsoft.Interoperability |
주요 변경 내용 | 주요 변경 |
원인
구체적으로 COM(구성 요소 개체 모델) 노출로 표시된 형식에서 System.Int64 인수를 사용하는 멤버를 선언합니다.
참고 항목
이 규칙은 더 이상 사용되지 않습니다. 자세한 내용은 사용되지 않는 규칙을 참조하세요.
규칙 설명
Visual Basic 6 COM 클라이언트는 64 비트 정수를 액세스할 수 없습니다.
기본적으로 어셈블리, public 형식, public 형식의 public 인스턴스 멤버, public 값 형식의 모든 멤버는 COM에 표시됩니다. 그러나 이 규칙의 가양성을 줄이려면 형식의 COM 표시 유형을 명시적으로 지정해야 합니다. 포함 어셈블리는 false
로 설정된 System.Runtime.InteropServices.ComVisibleAttribute로 표시해야 하고, 형식은 true
로 설정된 ComVisibleAttribute로 표시해야 합니다.
위반 문제를 해결하는 방법
값을 항상 32비트 정수로 표현할 수 있는 매개 변수에 대한 이 규칙의 위반 문제를 해결하려면 매개 변수 형식을 System.Int32로 변경합니다. 매개 변수의 값이 32비트 정수로 표현할 수 있는 값보다 클 수 있는 경우 매개 변수 형식을 System.Decimal로 변경합니다. System.Single 및 System.Double은 Int64 데이터 형식의 상위 범위에서 둘 다 정밀도가 손실됩니다. 멤버를 COM에 표시하지 않으려는 경우 false
로 설정된 ComVisibleAttribute로 멤버를 표시합니다.
경고를 표시하지 않는 경우
Visual Basic 6 COM 클라이언트에서 형식에 액세스하지 않을 것이 확실한 경우 이 규칙의 경고를 표시하지 않아도 됩니다.
예시
다음 예제에서는 규칙을 위반하는 형식을 보여 줍니다.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public class SomeClass
{
public void LongArgument(long argument) {}
}
}
관련 규칙
CA1413: Com 노출 값 형식에 public이 아닌 필드를 사용하지 마십시오.
CA1407: COM 노출 형식에 정적 멤버를 사용하지 마십시오.
CA1017: 어셈블리를 ComVisibleAttribute로 표시하십시오.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기