2009-11-16 12 views

Odpowiedz

7

plc biblioteki powszechnie użyć atrybutu TypeForwardedTo gdy różne wersje ramach przenieść typ pomiędzy zespołami. Na przykład delegaci stylu Func<> zostali przeniesieni z SystemCore w wersji 3.5 do mscorlib w wersji 4.0.

można zobaczyć prawdziwy świat używa tego otwierając System.Core.dll od 4,0 w ildasm, dwukrotne kliknięcie na węźle Oczywisty i szuka wszystkich linii podobnej do poniższej

.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

doskonałym przykładem. Teraz, jeśli tylko resolver WCF będzie respektował 'TypeForwardedToAttribute' ;-p –

5

Z msdn:

Na przykład, przypuśćmy, że aplikacja używa klasy przykład w zespole nazwie Utility.dll. Twórcy Utility.dll mogą zdecydować się na refaktoryzację zespołu, a podczas tego procesu mogą przenieść klasę Example do innego zespołu. Jeśli stara wersja narzędzia Utility.dll zostanie zastąpiona przez nową wersję pliku Utility.dll i jego zespołu towarzyszącego, aplikacja korzystająca z klasy Example zawodzi, ponieważ nie może zlokalizować klasy Example w nowej wersji pliku Utility.dll.

Twórcy pliku Utility.dll mogą tego uniknąć, przesyłając żądania dla klasy Example, używając atrybutu TypeForwardedToAttribute. Jeśli atrybut został zastosowany do nowej wersji pliku Utility.dll, żądania dla klasy Example są przekazywane do zespołu, który zawiera teraz tę klasę. Istniejąca aplikacja działa normalnie, bez ponownej kompilacji.

0

Ogólnie wydaje się, że pozwala na większą elastyczność/możliwość refaktoryzacji w swoich klasach bibliotecznych. Znalazłem artykuł na blogach MSDN pomocne. W tym artykule jeden z przykładów pokazuje, że istniejąca biblioteka jest podzielona na dwie oddzielne biblioteki DLL, w których aplikacja korzystająca z bibliotek nie musiałaby przejmować się tym, że typ został przeniesiony do innej biblioteki dll w nowszych wersjach biblioteki dll, dzięki przekazywaniu typów.

MSDN Blog Posting: Type Forwarding

Powiązane problemy