Istnieje wyraźne nakładanie się tego, co możesz zrobić z obiema. Czy odbicie w komponencie ComponentModel jest tylko trochę bardziej przyjazną warstwą na System.Reflection?Różnica między odbiciem komponentu ModelModel (np. PropertyDescriptor) a standardowym odzwierciedleniem (np. PropertyInfo)?
Odpowiedz
Nie - jest więcej. ComponentModel pozwala na wykonanie kilku rzeczy typu DLR, takich jak właściwości środowiska wykonawczego. W ten sposób DataView udostępnia kolumny do siatki - nie są to właściwości odbicia - są to właściwości środowiska wykonawczego. Słowa kluczowe są tutaj: ICustomTypeDescriptor
i TypeDescriptionProvider
.
Ten model umożliwia również abstrakcję i niezależność. Na przykład, jeśli dużo się zastanawiasz nad właściwościami, rozważ HyperDescriptor - to narzędzie, które napisałem, używa niestandardowej implementacji PropertyDescriptor
, aby zamienić model odbicia dla wstępnie skompilowanego modelu, w celu zwiększenia wydajności.
Pod względem użytkowania istnieją pewne inne różnice; ComponentModel obsługuje tylko jedną instancję dowolnego atrybutu na elemencie członkowskim (w przeciwieństwie do odbicia, gdzie dozwolone jest wiele podobnych atrybutów). Jest to zorientowane na dane - więc istnieją właściwości, podobnie jak zdarzenia (głównie przeznaczone do powiadamiania o zmianach) - ale nie ma pól ani metod.
Posiada również dobre wsparcie dla i18n - ponieważ DisplayName itp. Można dostosować w locie.
Jednak ComponentModel nie jest (bezpośrednio) kompatybilny z takimi rzeczami jak LINQ (w szczególności MemberExpression) - ponieważ chce związać z danymi odbicia.
Wreszcie, komponent ComponentModel jest bardzo często używany w IDE przez rzeczy takie jak PropertyGrid (tak działają rzeczy takie, jak dodatkowe właściwości dla porad narzędziowych), ale równie prawie wszystkie powiązania danych interfejsu użytkownika odbywają się za pośrednictwem komponentu ComponentModel (ponieważ umożliwia to wiązanie do obsługuje DataTable, klasy i wszystko, co możesz wymyślić).
- 1. Różnica między RTTI a odbiciem w Javie
- 2. Różnica między trybami dostępu obiektu "Plik" (np. W +, r +)
- 3. Różnica między std :: function <> a standardowym wskaźnikiem funkcji?
- 4. NP-trudne problemy, które nie są NP-kompletne są trudniejsze?
- 5. odpowiednik pandy np. Gdzie
- 6. Różnice między platformą programistyczną API, np. APIGEE i ESB
- 7. Dlaczego P ⊆ współ-NP?
- 8. Różnica między onbeforeunload a onunload
- 9. Jaka jest różnica między spin_lock a raw_spin_lock()?
- 10. Różnica między metodą GetGetMethod a właściwością GetMethod?
- 11. Różnica między obiektem a *?
- 12. Różnica między jquery a $
- 13. np. Gdzie wiele wartości zwracanych
- 14. Różnica między odbiciem a późnym wiązaniem w java z przykładami czasu rzeczywistego
- 15. Jak utworzyć macierz 3 wymiarów w numpy, np. Matlab a (:,:, :)
- 16. Różnica między UNHEX a X (MySQL)
- 17. Co robi np.% +%? w R
- 18. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 19. iOS: przepustowość przepustnicy np. Alamofire
- 20. Podział słów w językach bez spacji między wyrazami (np. Azjatycki)?
- 21. Różnice między programem Guile a standardowym (w Racket IDE)?
- 22. Jaka jest różnica między standardowym komponentem MBean a dynamicznym komponentem MBean?
- 23. Różnica między zapytaniem a powiedzeniem w Akce?
- 24. Skutecznie określa "sortowanie" listy, np. Levenshtein odległość
- 25. Pomniejsza różnica między płaskim a sondą()
- 26. Różnica między String [] a i String ... a
- 27. Atrybuty a niestandardowe atrybuty w PropertyInfo
- 28. Różnica między bip pid a $$
- 29. Różnica między kodowaniem a sortowaniem?
- 30. Różnica między OpenCV a OpenCL
Wiem, że jest starszy niż wzgórza, ale czy można wyjaśnić niektóre rzeczy, które można i nie można zrobić w LINQ, jeśli używasz System.ComponentModel do refleksji? – wootscootinboogie
@woot to krótka odpowiedź: LINQ nie dba o ComponentModel –