CLSCompliant속성 은 무엇입니까 ?
CLSCompliant속성 은 무엇입니까 ?
답변:
CLSCompliant다른 .NET 언어에서 클래스를 사용할 수있게 하려면 속성을 사용하여 클래스를 표시 합니다.
기본 규칙은 다음과 같습니다.
서명되지 않은 형식은 클래스의 공용 인터페이스에 속하지 않아야합니다. 이것이 의미하는 것은 퍼블릭 필드에는 uintor 와 같은 서명되지 않은 유형이 ulong없어야하고, 퍼블릭 메서드는 서명되지 않은 유형을 반환해서는 안되며, 공용 함수에 전달 된 매개 변수에는 서명되지 않은 유형이 없어야한다는 것입니다. 그러나 서명되지 않은 유형은 개인 구성원의 일부일 수 있습니다.
포인터 와 같은 안전하지 않은 유형은 public멤버 와 함께 사용하면 안됩니다 . 그러나 private멤버 와 함께 사용할 수 있습니다 .
클래스 이름과 멤버 이름은 사례에 따라 다를 수 없습니다. 예를 들어, 이름이 MyMethod및 인 두 개의 메소드를 가질 수 없습니다 MYMETHOD.
속성과 메서드 만 오버로드 될 수 있으며 연산자는 오버로드되지 않아야합니다.
코드의 다른 소비자에게 CLS 규격 임을 알리고 C # 컴파일러 가 CLS 규격인지 확인 합니다.
참조 된 기사에는 CLS 규정 준수에 대한 자세한 내용이 포함되어 있습니다.
다른 답변은 맞습니다. CLS는 공통 언어 사양 (Common Language Specification)의 약자입니다. .NET 언어가 구현하고 이해해야하는 최소한의 규칙과 필요한 언어 기능입니다. 이 세트는 .NET에서 유형이 정의되는 방식을 정의하는 공통 유형 시스템 의 서브 세트입니다 .
CLS를 준수한다는 것은 CLR에서 컴파일하고 실행할 수있는 모든 언어에서 사용할 수있는 코드를 작성할 수 있음을 의미합니다. 그러나 CLS 준수는 필요하지 않으므로 CLS 준수가 어렵거나 불가능한 경우에 유연성을 제공합니다.
다른 개발자가 코드를 사용하려면 API (공용 클래스 및 메서드)가 CLS를 준수해야합니다. CLSCompliantAttribute를 어셈블리에 추가하여이를 선언해야합니다. FxCop ( Framework Cop)이 나와 동의하지 않더라도 다른 사람을 위해 글을 쓰지 않으면 CLS 준수가 필요하지 않습니다 .
어셈블리가 CLSCompliantAttribute로 표시되면, 컴파일러는 (!해야합니다) 컴파일 할 때, 그것은 CLS 규칙의 (일부 위반하는 것입니다 있는지 확인하기 위해 코드를 확인합니다 ocdecio 고정 당신에게 언급) 및 보고서 위반.
out매개 변수와 같은 비 CLSCompliant 기능을 지원하는 데 아무런 문제가 없으므로 CLSCompliance를 완료하면 얻을 수있는 이점이 있습니다.
여기에 적합 : 전체 프로젝트 CLS 규격을 표시하려면이 줄을 추가하십시오 AssemblyInfo.cs(솔루션 탐색기의 속성에서 찾을 수 있음)
[assembly:CLSCompliant(true)]
또는 VB.NET에서 동등하게 ( AssemblyInfo.vb내 프로젝트 아래에 숨겨져 있습니다)
<Assembly: CLSCompliant(True)>
코드 CLS를 준수 하도록 만들어 주셔서 감사합니다 .