Temat: Wywołanie metody obiektu zawartego w kolekcji
Sergiusz B.:
Refleksja jest b. kosztowna i wielu ludzi tego nie rozumie - vide jeden z przykładów w tym wątku...
Sądzę,że potrawisz uważnie i ze zrozumieniem czytać to co jest napisane. Także zrozumiałeś zapewne, ze to był raczej taki przykład dla sztuki a nie odpowiedź na pytanie autora wątku. Refleksja jest kosztowna, ale są zastosowania, do których jest stworzona. Swoją drogą w zamieszczonym przykładzie narzutu nie ma dużego na czas wykonania, dzięki temu, że metoda jest generyczna i defacto typy są dostarczane od razu, nie ma potrzeby ładowania assembly.
Ale z refleksji można korzystać chociażby w przypadku, gdy dostarczamy możliwość uruchamiania pluginów w aplikacji. Dzięki niej możemy sprawdzić kod, który dostarcza, ktoś i go zweryfikować, czy posiada odpowiednie metody, typy itp..
Przydatna jest również jeśli chcemy dynamicznie w trakcie trawnia wykonania np podmienić biblioteki bez potrzeby ponownego uruchamiania całej aplikacji ( różne np. serwerowe aplikacje, które muszą działać cały czas) i podmienić w locie definicje pewnych metod. Jest wiele zastosowań do których refleksja się przydaje i w wielu jest używana. Ale to wszystko za pewne wiesz:)
Odpowiem prosto : rozumiem to, ale są czasami momenty, w których narzut jest akceptowalny, chociażby w takich przykładach jw. :) Oczywistym jest, że jeśli mam to być często używany fragment to użycie refleksji nie jest najlepszym wyjściem.
Łukasz Machowski edytował(a) ten post dnia 30.05.10 o godzinie 19:30