Wpis z mikrobloga

Aplikacja w wpf - mvvm i mam klase w której zdefiniowałem sobie metody do robienia różnych rzeczy z urządzeniem po sieci (wysyłanie jakiś danych itp ) nazywa się LanLink i w konstruktorze mam połączenie się z urządzeniem które przyjmuje tylko jedno połączenie w tym samym czasie.

I teraz zatrzymałem się na tym gdzie utworzyć (i jak) instancje klasy LanLink aby ona utrzymywała połączenie oraz była dostępna z pozostałych ViewModeli poszczególnych windoków / funkcji (ok 40-50 VM)

Efekt jaki chce uzyskać to możliwość wpisania sobie Obiekt.Wyślij(dane); gdziekolwiek jestem w jednym z tych modeli.

#csharp #naukaprogramowania
  • 6
  • Odpowiedz
@mmzf: Dependency Injection by Ci to opędzlowało łatwo, zarejestrowałbys sobie obiekt jako singletona w DI. Bez DI możesz implementować singletona (statyczna instancja) samodzielnie, chociaż to lekki code smell.
  • Odpowiedz
@piepies: Ok, ale to wymaga chyba żonglerki z lekkim odwróceniem zależności i tworzeniem widoków w oparciu o hierarchię wstrzykiwanych viewmodeli - inaczej musiałbyś robić resolve z kontenera DI przy ręcznym dodawaniu viewmodeli jako DataContextu widoków. Przy zastosowaniu ViewModelLocatora z Prisma masz to w sumie w głębokim poważaniu, framework robi całe dźwiganie za developera.
  • Odpowiedz
@Czesiowcy: @piepies:

Singleton już działa i robi to co ma robić, edukuje się teraz z DI poszerzone o Prism / unity w WPF i zobaczymy jak to finalnie zrobię. Na ten moment ważne jest dla mnie że nie muszę kombinować z rozłączaniem i podłaczaniem urządzeń oraz w prosty sposób są konfigurowalne (baudrate lub ip na socketach)

I dziękuje za pomoc :)
  • Odpowiedz