이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 21086|회답: 0

[출처] InternalsVisibleToAttribute는 내부 멤버를 지정된 친구 어셈블리에 노출시킵니다

[링크 복사]
게시됨 2017. 2. 6. 오후 2:27:59 | | |
유원 의회 소개
내부적으로 정의된 클래스의 멤버들(타입, 메서드, 속성, 변수, 이벤트 포함)은 같은 어셈블리에서만 접근할 수 있다는 것을 알고 있습니다(물론 여기서 말하는 것은 일반적인 방식이고, 반사를 통한 접근은 포함하지 않습니다). 이 규칙은 에 속해 있습니다. .NET 2.0은 약간 문제가 있어서, 어셈블리의 내부 멤버를 특정 멤버가 접근할 수 있도록 설정할 수 있습니다. 이 내부 구성원을 포함하는 어셈블리를 소스 어셈블리라고 부르고, 어셈블리 집합을 친구 어셈블리라고 부릅니다.

친구 어셈블리 사용
이 속성은 어셈블리 레벨에서 사용됩니다.


이렇게 하면 FriendAssembly 프로그램이 어셈블리를 참조한 후 내부 이름 속성에 접근할 수 있습니다.
일반적으로 이 어셈블리: InternalsVisibleTo("FriendAssembly")는 어셈블리 수준에 있으므로 AssemblyInfo.cs에 배치하는 것이 더 적합합니다.

InternalsToVisibleTo 사용 시기
사실 이 속성은 일반적인 애플리케이션에서는 사용되지 않으며, 이 속성을 남용해서는 안 됩니다. 일반적으로 잘 설계된 어셈블리는 외부에 개방될 필요가 없기 때문입니다.
하지만 유닛 테스트 시나리오에서는 이 기능을 활용할 수 있습니다. 이 기능을 통해 단위 테스트 코드가 내부 멤버에 접근할 수 있도록 지정할 수 있어, 해당 멤버들을 단위 테스트할 수 있습니다. 하지만 이 경우 소스 어셈블리에 친구 어셈블리의 이름을 죽음으로 써야 하므로 보안 문제가 발생합니다. 보안을 보장하려면 서명 어셈블리를 도입할 수 있습니다.

InternalsToVisibleTo 및 서명 어셈블리
친구 메타 어셈블리의 이름과 공개키를 InternalsVisibleTo에 직접 지정할 수 있습니다.
VS 개발자 명령줄을 사용해 FriendAssembly의 공개 키를 생성합니다:


친구 어셈블리의 이름과 소스 어셈블리의 공개 키를 지정하세요:


사실, 친구 어셈블리는 소스 어셈블리를 참조하고, 서명된 어셈블리는 서명되지 않은 어셈블리를 참조하며, 서명된 어셈블리는 서명되지 않은 친구 어셈블리를 지정할 수 없으므로 서명된 어셈블리가 모두 서명되어야 합니다.





이전의:자동으로 텐페이 결제 이체 페이지로 이동하여 정보를 자동으로 입력하세요
다음:InternalsVisibleTo를 사용해 어셈블리에 "friend assembly"를 추가하세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com