|
|
2021-1-11 11:43:49에 게시됨
|
|
|
|

.NET은 별도의 언어입니다. 즉, 개발자로서 .NET용 여러 언어(예: C#, C++/CLI, Eiffel, F#, IronPython, IronRuby, PowerBuilder, Visual Basic, Visual COBOL, Windows PowerShell)로 개발할 수 있습니다. .NET용으로 개발된 라이브러리의 타입과 멤버를 원래 작성된 언어나 원래 언어의 관례를 따르지 않고도 접근할 수 있습니다. 컴포넌트 개발자라면, 어떤 .NET 앱이든 언어와 상관없이 컴포넌트에 접근할 수 있습니다.
컴포넌트가 공통 언어 명세를 준수한다면, CLS 준수가 보장되며, CLS를 지원하는 모든 프로그래밍 언어로 작성된 어셈블리 코드를 통해 접근할 수 있습니다. 컴파일 시점에 CLSCompliantAttribute 기능을 소스 코드에 적용하여 컴파일 시 공통 언어 명세를 준수하는지 확인할 수 있습니다.
공통 언어 명세서는 CLS 준수의 각 규칙을 논의하는데, 이는 소비자(CLS 호환 컴포넌트 컴포넌트에 프로그래밍적으로 접근하는 개발자), 프레임워크(언어 컴파일러를 사용해 CLS 호환 라이브러리를 생성하는 개발자), 확장기(언어 컴파일러나 코드 분석기 등 CLS 호환 컴포넌트 도구를 만드는 개발자)에게 적용되기 때문입니다. 프로그램은 컴파일 시 기본적으로 코드가 CLS 요구사항을 준수하는지 확인하지 않지만, 프로그램이 공개(코드쉐어, Nuget 릴리스 등)일 수 있다면 [assembly: CLSCompliant(true)] 사용을 권장합니다.도서관이 CLS 준수를 하고 있음을 표시하세요。
리소스:
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
쉽게 말하자면:
필라프는 손으로 먹을 수 있고, 숟가락으로 먹을 수도 있지만 문제는 없지만, 손으로 먹는 것은 위생 기준이나 기준에 부합하지 않습니다. CLS는 프로토콜 명세이지만, 어셈블리는 오류를 보고하지 않으며 정상적인 사용에 영향을 주지 않지만, 개발한 코드의 일부 유형과 매개변수는 표준을 충족하지 못합니다.
CLS 사용
AssemblyInfo.cs 파일에 다음 코드를 추가하세요:
이 명령은 전체 의회에 적용될 것입니다.
이 기능을 설정하지 않으면, 객체에 이 기능을 추가할 때 다음과 같은 오류가 발생할 수 있습니다:
어셈블리에는 CLSCompliant 기능이 없으므로 "A.Test"는 CLSCompliant 기능을 요구하지 않습니다 테스트 코드는 다음과 같으며, 다시 컴파일한 다음:
"A.Test" 유형은 CLS를 준수하지 않습니다
두 개의 경고를 보고, 경고 항목을 클릭하면 특정 줄 번호로 이동할 수 있습니다. 이 경우 우리 코드 라인이 CLS 사양에 부합하지 않음을 나타내며, 그 후 직접 수정할 수 있습니다.
라인이 CLS 사양을 준수하지 않지만, 수정이 프로그램의 올바른 동작에 영향을 미치지만 VS가 경고하지 않길 원한다면, 필드나 클래스에 다음과 같은 특성을 추가할 수 있습니다:
이렇게 하면 이 경고가 발령되지 않습니다.
(끝)
|
이전의:Entity Framework 쿼리 최적화 WITH(NOLOCK)다음:.NET/C# 아래에서 현재 애플리케이션 상태(CPU, 스레드, GC)를 얻기 위해
|