Czy każdy może zaoferować prawdziwy senario, w którym można użyć funkcji Forward?Przekazywanie typu:
Odpowiedz
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
}
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.
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.
- 1. Przekazywanie typu wyliczeniowego jako argument?
- 2. Przekazywanie tablicy ArrayList dowolnego typu do metody
- 3. Przekazywanie typu "var" do metody w C#
- 4. typu mającego konwersję do typu && operatora
- 5. Przekazywanie wektorów przez odniesienie
- 6. Przekazywanie struktur do funkcji
- 7. Przekazywanie ogólnej funkcji jako parametru
- 8. Przekazywanie varargs w konstruktorze podrzędnym
- 9. Przekazywanie połączeń
- 10. Przekazywanie bezkształtnego, rozszerzalnego rekordu do funkcji
- 11. Przekazywanie struktur do jądra CUDA
- 12. Jawne przekazywanie list metodom działającym jak przekazywanie przez odniesienie
- 13. Przekazywanie parametru typu „obiektu” w parametrze wycenione tabela dla sql_variant kolumny
- 14. Przekazywanie typu klasy do metody, a następnie rzutowanie na ten typ?
- 15. przekazywanie tablicy do json.stringify
- 16. Przekazywanie listy kwargs?
- 17. Przekazywanie zmiennych do shell_exec()?
- 18. Przekazywanie obiektu do viewmodel
- 19. Przekazywanie tablic przez odniesienie?
- 20. tworzenie wątków - przekazywanie argumentów
- 21. Przekazywanie modelu do html.Action
- 22. Przekazywanie argumentów konstruktorowi klasy
- 23. Przekazywanie lambda jako bloku
- 24. Przekazywanie pakietu na startActivity()?
- 25. Przekazywanie argumentów programistom Hadoop
- 26. Przekazywanie referencji do WebProxy?
- 27. Przekazywanie parametrów do http.HandlerFunc
- 28. magnific-popup przekazywanie zmiennej
- 29. Przekazywanie obiektów do UITypeEditor
- 30. Przekazywanie tablicy przez odniesienie
doskonałym przykładem. Teraz, jeśli tylko resolver WCF będzie respektował 'TypeForwardedToAttribute' ;-p –