CLSCompliant
속성 은 무엇입니까 ?
CLSCompliant
속성 은 무엇입니까 ?
답변:
CLSCompliant
다른 .NET 언어에서 클래스를 사용할 수있게 하려면 속성을 사용하여 클래스를 표시 합니다.
기본 규칙은 다음과 같습니다.
서명되지 않은 형식은 클래스의 공용 인터페이스에 속하지 않아야합니다. 이것이 의미하는 것은 퍼블릭 필드에는 uint
or 와 같은 서명되지 않은 유형이 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를 준수 하도록 만들어 주셔서 감사합니다 .