IT박스

.NET의 'CLSCompliant'속성은 무엇입니까?

itboxs 2020. 6. 2. 18:59
반응형

.NET의 'CLSCompliant'속성은 무엇입니까?


CLSCompliant속성 은 무엇입니까 ?


다른 .NET 언어에서 클래스를 사용할 수있게하려면 CLSCompliant 특성으로 클래스를 표시합니다. 기본 규칙은 다음과 같습니다.

  1. 서명되지 않은 형식은 클래스의 공용 인터페이스에 속하지 않아야합니다. 이것은 공용 필드에 uint 또는 ulong과 같은 서명되지 않은 유형이 없어야하고, 공용 메소드는 서명되지 않은 유형을 리턴해서는 안되며, 공용 함수에 전달 된 매개 변수에는 서명되지 않은 유형이 없어야한다는 의미입니다. 그러나 서명되지 않은 유형은 개인 구성원의 일부일 수 있습니다.

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

  3. 클래스 이름과 멤버 이름은 사례에 따라 다를 수 없습니다. 예를 들어 MyMethod와 MYMETHOD라는 두 개의 메소드를 가질 수 없습니다.

  4. 속성과 메서드 만 오버로드 될 수 있으며 연산자는 오버로드되지 않아야합니다.


코드의 다른 소비자에게 CLS 규격 임을 알리고 C # 컴파일러 가 CLS 규격인지 확인 합니다.

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


다른 답변은 맞습니다. CLS는 공통 언어 사양 (Common Language Specification)의 약자입니다. .NET 언어가 구현하고 이해해야하는 최소한의 규칙과 필요한 언어 기능입니다. 이 세트는 .NET에서 유형이 정의되는 방식을 정의하는 공통 유형 시스템 의 서브 세트입니다 .

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

다른 개발자가 코드를 사용하려면 API (공용 클래스 및 메서드)가 CLS를 준수해야합니다. CLSCompliantAttribute를 어셈블리에 추가하여이를 선언해야합니다. FxCop ( Framework Cop)이 나와 동의하지 않더라도 다른 사람을 위해 글을 쓰지 않으면 CLS 준수가 필요하지 않습니다 .

어셈블리가 CLSCompliantAttribute로 표시되면, 컴파일러는 (!해야합니다) 컴파일 할 때, 그것은 CLS 규칙의 (일부 위반하는 것입니다 있는지 확인하기 위해 코드를 확인합니다 ocdecio 고정 당신에게 언급) 및 보고서 위반.


CLS 규격은 CLR에서 허용하는 전체 언어 스펙트럼의 하위 집합입니다. CLR을 대상으로하는 대부분의 언어에서 사용 가능한 하위 집합으로 제한합니다. 이렇게하면 CLR을 대상으로하는 모든 언어에서 라이브러리를 사용할 수 있다고 보장 할 수는 없습니다.


여기에 적합 : 전체 프로젝트 CLS 규격을 표시하려면이 줄을 추가하십시오 AssemblyInfo.cs(솔루션 탐색기의 속성에서 찾을 수 있음)

[assembly:CLSCompliant(true)]

또는 VB.NET에서 동등하게 ( AssemblyInfo.vb내 프로젝트 아래에 숨겨져 있습니다)

<Assembly: CLSCompliant(True)>

코드 CLS를 준수 하도록 만들어 주셔서 감사합니다 .

참고 URL : https://stackoverflow.com/questions/570452/what-is-the-clscompliance-attribute-in-net

반응형