Jak napisać dobry, ciekawie powtarzający się wzór szablonu (CRTP) w języku C #
Jakiś czas temu chciałem stworzyć własny program odwzorowujący dane, który byłby znacznie prostszy niż przeciętny ORM. W ten sposób znalazłem potrzebę posiadania dostępu do informacji o typie dziedziczenia klas w mojej klasie bazowej. Moją pierwszą myślą była refleksja, ale jest zbyt powolna (jeśli jednak używasz refleksji, sprawdźFasterflect ponieważ „prawie” eliminuje problemy z wydajnością refleksji).
Więc zwróciłem się do rozwiązania, które później odkryłem, miało własną nazwę: The Curiously Recurring Template Pattern. W większości rozwiązało to mój problem, ale nauczenie się prawidłowego wdrażania tego wzorca było trochę trudne. Dwa główne pytania, które musiałem rozwiązać, to:
1) W jaki sposób mogę pozwolić, aby mój zużywający się kod działał z moimi ogólnymi obiektami bez potrzeby poznawania ogólnych parametrów, z którymi zostały utworzone obiekty?
2) Jak mogę dziedziczyć pola statyczne w C #?
Wyzwaniem było ustalenie pytań. Kiedy zdałem sobie sprawę z tego, co muszę zrobić, rozwiązanie tych pytań było całkiem łatwe. Jeśli potrzebujesz CRTP, prawdopodobnie będziesz musiał odpowiedzieć na te pytania ... wydają się iść w parze.