internal 접근자는 현재 어셈블리에서만 접근 가능합니다.
솔루션에 프로젝트를 생성하여 테스트를 진행하고자 하면 internal로 설정된 Class 및 개체에는 접근이 불가합니다.
public으로 변경하면 배포시 접근 가능하다는 찝찝함이 존재해버립니다.
InternalsVisibleTo라는 Attribute Class를 이용해서 특정 어셈블리에서만 internal로 접근 가능하게 설정 할 수 있습니다.
테스트하고자 하는 프로젝트의 AssemblyInfo 클래스에 아래의 값을 작성해주 시면 되겠습니다.
//해당 Assembly에는 internal 접근 가능 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("LogAnalyzerTests")]
|
우측에 IWebService 인터페이스의 접근자는 internal인데 테스트 프로젝트에서 접근하고 있는것을 확인 하실 수 있습니다.
일반적으로는 위와같이 진행하면 문제가없지만, 현재 어셈블리와 지정할 어셈블리 모두 서명이 되지 않아야 합니다.
둘중에 하나라도 서명이 되어있다면 강력한 이름으로 서명되어야합니다. 강력한 이름은 Sn.exe를 이용하여 생성합니다.(.snk파일에서 추출)
-
강력한 이름의 키 파일에서 별도의 파일로 공개 키를 추출합니다. Sn -p snk_file outfile -
전체 공개 키를 콘솔에 표시합니다. Sn -tp outfile -
전체 공개 키 값을 복사하여 소스 코드에 붙여 넣습니다.
//강력한 이름으로 접근 [assembly: InternalsVisibleTo("LogAnalyzerTests, PublicKey=002400000480000094" + "0000000602000000240000525341310004000" + "001000100bf8c25fcd44838d87e245ab35bf7" + "3ba2615707feea295709559b3de903fb95a93" + "3d2729967c3184a97d7b84c7547cd87e435b5" + "6bdf8621bcb62b59c00c88bd83aa62c4fcdd4" + "712da72eec2533dc00f8529c3a0bbb4103282" + "f0d894d5f34e9f0103c473dce9f4b457a5dee" + "fd8f920d8681ed6dfcb0a81e96bd9b176525a" + "26e0b3")]
|
참조 : MSDN
'.Net > Winform' 카테고리의 다른 글
C# FlowLayoutPanel 자식 Dock (0) | 2014.03.18 |
---|---|
XmlDocument 클래스를 이용한 XML Read&Write (0) | 2014.03.10 |
C# WebBrowser IE 버젼 변경 (0) | 2013.09.06 |
[펌]윈도우 7 테스크바를 활용한 애플리케이션 개발 (0) | 2013.08.22 |
C# IP 및 HostName으로 MacAddress 얻기 (0) | 2013.07.19 |