C#의 내부 키워드는 표시된 메서드, 필드 또는 속성을 현재 어셈블리 내에서만 사용할 수 있게 만들 수 있는데, 만약 다른 어셈블리가 이 내부 메서드를 사용해야 한다면 어떻게 해야 할까요? .NET은 C++의 friend 클래스와 유사한 InternalsVisibleTo를 사용하여 이 함수를 구현하는 방법을 제공합니다.
이것은 테스트를 할 때 흔하며, 프로젝트 내 내부 메서드가 표시한 기능을 테스트하기 위해 다른 프로젝트가 필요하기 때문에, InternalsVisibleTo를 사용하면 단위 테스트를 위해 공개 간 메서드를 변경할 필요가 없습니다.
InternalsVisibleTo를 사용할 때 여전히 주의해야 할 점들이 있습니다. 특히 PublicKey는 이해하기 쉽지 않습니다. 이제 InternalsVisibleTo 사용법에 대해 이야기해 봅시다:
먼저 전제를 설명해 보겠습니다: Project1은 기능형 프로젝트이고, Project1.Test(어셈블리 이름: Project1.Test.dll)는 Project1의 테스트 프로젝트입니다.
1. Project1의 Assembly.cs 파일을 열고 파일 끝에 다음 문장을 추가합니다:
PublicKey=******는 Project1.Test.dll 공개키로 대체되어야 하며, 공개키를 얻는 방법은 문서 끝의 노트 섹션을 참고하세요.
2. System.Runtime.CompilerServices가 Assembly.cs의 네임스페이스 참조에 추가되었는지, InternalsVisibleTo가 System.Runtime.CompilerService 네임스페이스에 위치해 있음을 검증합니다.
Notes:
1. 공개키를 어떻게 얻나요?
A: 명령줄에서 sn -tp Project1.Test.dll 사용하면 PublicKey와 PublicKeyToken을 볼 수 있습니다
2. Project1이 강력한 이름의 프로젝트라면, InternalsVisibleTo는 PublicKey를 지정해야 하므로 Project1.Test는 InternalsVisibleTo를 올바르게 사용하려면 강력한 서명을 사용해야 합니다. 그렇지 않으면 Project1이 강력한 서명을 사용하지 않으면 컴파일이 오류를 일으킵니다. 그렇다면 Project1.Test는 강한 서명을 사용할 필요가 없고, InternalsVisibleTo를 사용할 때는 어셈블리 이름만 입력하면 되며, PuklicKey를 설정할 필요가 없습니다.
면책 조항: Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.
Mail To:help@itsvse.com