Pamiętam naukę VB4 i przeciąganie przycisku do formularza, dwukrotne kliknięcie tego przycisku i pisanie kodu w module obsługi zdarzeń, którym właśnie zostałem magicznie pobłogosławiony. Pochodząc z QBASIC byłem zachwycony „V” w „VB”, projektant wizualny był dosłownie najlepszą rzeczą od krojonego chleba.
Oczywiście możesz zrobić to wszystko programowo, ale magia „V” była tak pociągająca, że po prostu przeciągnąłeś ten przycisk. Zachęcono nas do skorzystania z tej trasy.
Ale kilka lat temu zacząłem uczyć się o języku C # i frameworku .net i byłem zafascynowany tym, że wszystko, co wiedziałem, właśnie wyszło z okna. W VB6 dzieje się dużo magii, która jest całkowicie odsłonięta w .net: weźmy InitializeComponents
na przykład konstruktory i metodę. W tym ostatnim znajdziesz wszystkie wystąpienia sterowania, które przeciągnąłeś z przybornika, wszystkie zarejestrowane zdarzenia i właściwości ustawione w projektancie.
I w porządku ... tak myślę. Po prostu czuję, że nie mam „tego”, co się dzieje, ten kod, który mogę modyfikować tylko za pośrednictwem projektanta, denerwuje mnie. Za każdym razem, gdy kopiujesz przycisk „Ok” z jednej formy do drugiej (czasami wraz z jego bratem „Anuluj”), w rzeczywistości kopiujesz kod, a to grzech, prawda? OSUSZAJ, nie powtarzaj się, mówi papież .
Odkładając na bok religie i szkoły myślenia, z całej obiektywności, czy nie powinniśmy czerpać formy z form podstawowych, a przycisk „Ok” (i wszyscy jego przyjaciele) żyli w formie podstawowej? Coś takiego, FormBase
z czego wywodzi się DialogFormBase
; wszystkie klasy tworzone w mgnieniu oka ... przez wpisanie kodu. Przyciski są tworzone w zależności od sposobu utworzenia klasy (tj. Argument enum konstruktora określa, które przyciski mają zostać utworzone), elementy sterujące są rozmieszczone w układzie paneli podzielonych i paneli układu przepływu, wstrzykiwane do postaci jakoContent
który pasuje do głównego panelu zawartości. Czy nie to robi ASP.net ze stronami wzorcowymi i symbolami zastępczymi treści? Uzyskałem formularz, gdy potrzebuję nowej „strony wzorcowej”, ale ta nowa „strona wzorcowa” nadal pochodzi z podstawowej klasy formularza, więc grafika jest spójna w całej aplikacji.
Dla mnie jest to o wiele więcej ponownego wykorzystania kodu niż cokolwiek innego, co kiedykolwiek zrobiłem z projektantem w WinForms, i nie było to nawet trudne, a kod nie jest zaśmiecony 200-liniową metodą, nad którą nie mam kontroli, mogę umieszczaj komentarze tam, gdzie lubię, nie zostaną one nadpisane przez projektanta. Myślę, że to tylko kwestia wzorców i architektury, co doprowadziło mnie do tego linku: Najlepszy projekt dla formularzy Windows, które będą miały wspólną funkcjonalność , gdzie zdałem sobie sprawę, że byłem na miejscu, z wyjątkiem odpowiedzi tam, sugeruje dokładnie to, co jestem robi, ale to doradzanie przeciwko formy dziedziczenia ponieważ rozważań projektantów. Tego nie rozumiem .z uwagi na względy struktury kodu, szczególnie w odniesieniu do dziedziczenia formy i kontroli, których nie widzę innego powodu, niż dobrze, że psuje projektanta .
Nie wszyscy możemy być po prostu leniwi, więc jakiej części mi brakuje?