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.

questionAnswers(1)

yourAnswerToTheQuestion