문제

이것은 CLSCompliant 기인하다?

도움이 되었습니까?

해결책

다른 .NET 언어에서 사용할 수 있는지 확인할 때 ClsCompliant 속성으로 클래스를 표시합니다. 이것이 기본 규칙입니다.

  1. 서명되지 않은 유형은 클래스의 공개 인터페이스의 일부가되어서는 안됩니다. 이것이 의미하는 바는 공공 분야가 UINT 또는 Ulong과 같은 서명되지 않은 유형을 가지고 있지 않아야한다는 것입니다. 공개 방법은 서명되지 않은 유형을 반환해서는 안되며, 공개 기능에 전달 된 매개 변수에는 서명되지 않은 유형이 없어야합니다. 그러나 서명되지 않은 유형은 개인 회원의 일부가 될 수 있습니다.

  2. 포인터와 같은 안전하지 않은 유형은 공개 회원과 함께 사용해서는 안됩니다. 그러나 개인 회원과 함께 사용할 수 있습니다.

  3. 클래스 이름과 멤버 이름은 사례에 따라 다르지 않아야합니다. 예를 들어 MyMethod와 MyMethod라는 두 가지 방법을 가질 수 없습니다.

  4. 속성과 메소드 만 과부하가 걸릴 수 있으며 연산자는 과부하가되지 않아야합니다.

다른 팁

다른 소비자에게 코드를 알려줍니다. CLS 준수, 또한 C# 컴파일러를 만듭니다 확인하다 CLS를 준수한다는 것입니다.

참조 기사에는 CLS 준수가 수반하는 내용에 대한 자세한 내용이 포함되어 있습니다.

다른 대답이 정확합니다. 몇 가지 사항을 명확히하겠습니다. Cls는 공통 언어 사양을 나타냅니다. .NET 언어가 구현하고 이해해야하는 최소한의 규칙과 필요한 언어 기능입니다. 이 세트는 다음의 하위 집합입니다 공통 유형 시스템, .NET에서 유형이 정의되는 방법을 정의합니다.

CLS를 준수한다는 것은 CLR에서 컴파일하고 실행할 수있는 모든 언어로 소비 할 수있는 코드를 작성할 수 있음을 의미합니다. 그러나 CLS 준수는 필요하지 않으므로 CLS 규정 준수가 어렵거나 불가능한 경우 유연성을 제공합니다.

다른 개발자가 코드를 소비하려는 경우 API (공개 클래스 및 방법)는 CLS를 준수해야합니다. ClsCompliantAttribute를 어셈블리에 추가하여이를 선언해야합니다. 다른 사람을 위해 글을 쓰지 않는다면 CLS 규정 준수는 필요하지 않습니다. fxcop (뼈대 경찰) 나와 동의하지 않을 것이다.

어셈블리가 ClsCompliantAttribute로 표시되면 컴파일러는 코드를 확인하여 컴파일 된 경우 CLS 규칙을 위반하는지 확인합니다 (일부 중 일부는 CLS 규칙을 위반하는지 확인합니다. Ocdecio 언급) 및 고정에 대한 위반을보고합니다.

CLS 준수는 CLR이 허용하는 전체 언어 스펙트럼의 하위 집합입니다. CLR을 대상으로하는 대부분의 언어가 사용할 수있는 서브 세트로 제한합니다. 이는 CLR을 타겟팅하는 모든 언어에서 라이브러리를 사용할 수 있음을 보장하지만 보장하지는 않습니다.

여기에 맞는대로 : 전체 프로젝트를 표시하려면 CLS를 준수합니다.이 라인을 추가하십시오. AssemblyInfo.cs (Solution Explorer의 속성에서 찾을 수 있습니다)

[assembly:CLSCompliant(true)]

또는 VB.net에서 동등하게AssemblyInfo.vb 내 프로젝트에 숨겨져 있음)

<Assembly: CLSCompliant(True)>

감사합니다 코드 CLS를 준수합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top