2009-11-16 3 views

답변

7

BCL 라이브러리는 일반적으로 TypeForwardedTo 속성을 사용합니다. 예를 들어 Func<> 스타일 대리자는 3.5 프레임 워크의 System.Core에서 4.0 프레임 워크의 mscorlib로 이동되었습니다.

당신은 현실 세계를 볼 수는 매니페스트 노드에서 ILDASM, 더블 클릭 4.0에서 System.Core.dll을 열고 다음

.class extern forwarder System.Func`1 
{ 
    .assembly extern mscorlib 
} 
.class extern forwarder System.Func`2 
{ 
    .assembly extern mscorlib 
} 
.class extern forwarder System.Func`3 
{ 
    .assembly extern mscorlib 
} 
+1

우수한 예와 비슷한 라인의 모든보고 이것 사용합니다. 이제 WCF 해석자 만이'TypeForwardedToAttribute'를 존중한다면 ;-p –

5

msdn에서 예를 들면 다음과 같습니다

, 응용 프로그램이 Utility.dll이라는 어셈블리의 예 클래스를 사용하여 가정합니다. Utility.dll 개발자는 어셈블리를 리팩터링하기로 결정할 수 있으며 프로세스에서 Example 클래스를 다른 어셈블리로 이동할 수 있습니다. 이전 버전의 Utility.dll이 새 버전의 Utility.dll 및 해당 부속 어셈블리로 교체되면 Example.dll 클래스를 사용하는 응용 프로그램은 새 버전의 Utility.dll에서 Example 클래스를 찾을 수 없기 때문에 실패합니다.

Utility.dll 개발자는 TypeForwardedToAttribute 특성을 사용하여 Example 클래스에 대한 요청을 전달함으로써이를 피할 수 있습니다. 특성이 Utility.dll의 새 버전에 적용된 경우 Example 클래스에 대한 요청은 이제 해당 클래스가 들어있는 어셈블리로 전달됩니다. 기존 응용 프로그램은 재 컴파일없이 정상적으로 계속 작동합니다.

0

일반적으로 라이브러리 클래스에서 유연성/리팩터링 기능을 허용하는 것으로 보입니다. 나는 MSDN 블로그에 도움이되는 기사를 발견했다. 이 기사에서 예제 중 하나는 기존 라이브러리가 2 개의 별도 DLL로 분리되어있는 것을 보여줍니다. 라이브러리를 사용하는 응용 프로그램은 유형 전달이 유형이 dll의 최신 버전에서 다른 dll로 이동되었음을 고려하지 않아도됩니다. 프레임 워크의 다른 버전 어셈블리 사이의 유형을 이동할 때

MSDN Blog Posting: Type Forwarding

관련 문제