Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon W jaki sposób MVXConvertingTargetBinding zapobiega zerowym odniesieniu wyjątków


W jaki sposób MVXConvertingTargetBinding zapobiega zerowym odniesieniu wyjątków


`MvxConvertingTargetBinding` in MvvMcross został zaprojektowany w celu zapobiegania zerowym wyjątkom odniesienia poprzez wdrożenie kilku kluczowych funkcji, które zapewniają solidne obsługa wartości zerowych i konwersji. Oto jak to pomaga zapobiec takim wyjątkom:

1. Struktura klasy podstawowej: `MvxConvertingTargetBinding 'dziedziczy po` MvxtargetBinding`, który stanowi podstawę do obsługi wiązań. Ta klasa podstawowa obejmuje mechanizmy zarządzania obiektem docelowym i obsługi zdarzeń, które z natury obejmują kontrole odniesień zerowych.

2. Słabe oddziaływanie do celu: klasa „mvxtargetBinding”, z której pochodzi `` mvxConvertingTargetBinding ', używa `słabego` `utrzymanie obiektu docelowego. Takie podejście pomaga zapobiegać wyciekom pamięci i zapewnia, że ​​obiekt docelowy można w razie potrzeby zebrać śmieci. Chociaż nie zapobiega bezpośrednio zerowymi wyjątkami odniesienia, pomaga zarządzać żywotnością obiektu, zmniejszając prawdopodobieństwo nieoczekiwanych zerowych.

3. Wirtualne metody pomijania SetValue: `MvxConvertingTargetBinding` zapewnia wirtualne metody, takie jak` `ateStEptValueForviewspecifificRease ()` i `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` Metody te pozwalają programistom na wdrożenie logiki, która może pominąć ustawienie wartości, jeśli spełnione są określone warunki, potencjalnie unikając scenariuszy, w których wartości zerowe mogą powodować problemy.

4. Obsługa konwertera: Podstawową funkcją „MvxConvertingTargetBinding” jest obsługa konwerterów, które są używane do przekształcania wartości między źródłem a celem. Podczas gdy same konwertery nie z natury zapobiegają zerowym odniesieniu, można je zaprojektować do wdzięcznego obsługi wartości zerowych. Na przykład konwerter może zwrócić wartość domyślną lub pusty ciąg, jeśli wejście jest zerowe.

5. Obsługa zdarzeń: w powiązaniach dwukierunkowych `MvxConvertingTargetBinding` obsługuje zdarzenia, aby zaktualizować źródło po zmianie celu. Zapewnia, że ​​obsługi zdarzeń są odpowiednio dołączone i odłączane, co pomaga zapobiegać wyjątkom odniesienia zerowego, unikając prób wywołania metod na obiekty zerowe.

6. Praktyki defensywne: Chociaż nie jest to wyraźnie część samej klasy „MvxConvertingTargetBinding”, programiści korzystający z tej klasy są zachęcani do przestrzegania praktyk programowania obronnego. Obejmuje to sprawdzenie odniesień zerowych przed próbą ich użycia, co jest kluczowe w zapobieganiu zerowym wyjątkom odniesienia.

Podsumowując, podczas gdy „MvxConvertingTargetBinding” nie zapobiega bezpośrednio zerowym wyjątkom odniesienia poprzez wyraźne kontrole zerowe, zapewnia ramy, które zachęcają do solidnego obsługi wiązań i konwersji, zmniejszając prawdopodobieństwo takich wyjątków. Deweloperzy powinni nadal wdrażać kontrole zerowe i praktyki programowania defensywnego podczas korzystania z tej klasy, aby upewnić się, że ich kod jest solidny w stosunku do wyjątków odniesienia zerowych.

Cytaty:
[1] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[2] http://mcx.space/wiki/index.cgi?doc%2Freadme
[3] https://rubberduckvba.blog/2020/10/25/making-mvvm-work-in-vba-part-3-bindings/
[4] https://blog.postsharp.net/nullreferencexception-object-reference-not-set
[5] https://www.christianfindlay.com/blog/stop-nullreferenceExceptions
[6] https://github.com/whitphx/vscode-emacs-mcx
[7] https://stackoverflow.com/questions/63497549/binding-onewayToSource-witheime-initalization-of--Target
[8] https://learn.microsoft.com/en-us/dotnet/api/system.nullreferenceException?view=net-9.0