Ponieważ pomocnicy klasy odnoszą się tylko do klasy opartej na tym, który helper jest "najbliższy" w zakresie, klasa po prostu nie może wiedzieć, że pomocnik istnieje. Na przykład możesz stworzyć pomocnika klasy w swoim urządzeniu, aby "pomóc" klasie z innej jednostki, dla której nie masz źródła. Klasa w drugiej jednostce nie ma pojęcia o żadnym pomocniku. Gdyby posiadała tę wiedzę, musiałaby zostać zrekompilowana, aby wziąć to pod uwagę ... co prowadzi do następnego problemu;
Rozważ to: Możesz zadeklarować klasę w jednej wspólnej jednostce, która jest używana przez wiele innych jednostek w twojej aplikacji. W każdej z tych jednostek deklarujesz nowego pomocnika dla tej wspólnej klasy za pomocą różnych metod i funkcji "pomocnika". Ponieważ każda jednostka nie wie nic o innych jednostkach, które również deklarują własnego pomocnika, nie ma sposobu, aby w jakiś sposób połączyć wszystkich pomocników. Rozważmy teraz, że ta wspólna jednostka żyje teraz na wstępnie skompilowanej granicy pakietu.
Klasy pomocników są uwodzicielskimi małymi poganami. Obiecują sławę i fortunę, ale zbyt często padają ofiarą śmierci i zniszczenia ... długo po tym, jak oddaliście się ich sztuczkom.
Z tego powodu ich wprowadzenie do języka rozwiązało bardzo specyficzne problemy, a mianowicie możliwość "pojawienia się" w celu wprowadzenia funkcjonalności do istniejącej struktury. Dopóki przestrzegasz zasady "tylko jeden pomocnik" i nie zboczysz z tej ścieżki, możesz wyjść stosunkowo nietknięta. Bez względu na to, będziesz potrzebował połączonej siły jelitowej Beowulfa, Leonidasa (Sparty) i Frodo Bagginsa, aby móc nawigować po tych wodach.
Biorąc pod uwagę, że tutaj, w zespole RAD Studio, nie chcemy używać klasowego pomocnika tam, gdzie można go uniknąć. A kiedy używamy ich odpowiednia falanga powstaje zanim jeszcze rozpocznie ...
ma być smoki tutaj ...
To nie ma znaczenia, czy więcej niż jeden pomocnik jest zdefiniowane w czasie wykonywania. Jeśli spróbujesz użyć metod wprowadzonych przez pomocnika innego niż ostatnio zdefiniowany, twój kod nawet się nie skompiluje, więc * nie ma * czasu działania. –
@Rob: cytuj z połączonej strony (Turbocharging Delphi 2010): "możesz zdefiniować i powiązać wiele pomocników klasy z jednym typem klasy" - oznacza to, że jeśli powiążę wielu pomocników klasy z jedną klasą, kod nie skompiluje się już więcej? – mjn
Możesz utworzyć wielu pomocników, ale tylko jeden będzie działać naraz. Kontynuuj czytanie cytowanego właśnie zdania: "tylko zero lub jeden pomocnik klasy ma zastosowanie w konkretnej lokalizacji w kodzie źródłowym.Operator klasy zdefiniowany w najbliższym zakresie.Operacja klasy pomocnika jest określona w normalny sposób w Delphi (tzn. Prawo do pozostawione w klauzuli uses jednostki) " –