Jedna instancja na projek

0

Witam, czy można utworzyć jedna instancje jakiegoś obiektu w jednym miejscu tak żeby można było użyć tego obiektu w każdym innym windows formie. Mam klasę SQL serwer i chciałbym żeby obiekt utworzony raz w projekcie był dostępny w innych komponentach.

3

Mozna to osiagnac miedzy innymi stosujac wzorzec singleton aczkolwiek nie jest to najlepsze rozwiazanie bo utrudnia testowanie aplikacji.

Mozna tez uzyc jakiegos kontenera DI (np. ninject) do wstrzykiwania zaleznosci i wtedy dla takiej klasy mozna ustawic scope na singleton przy bindowaniu i kontener sam zadba o to zeby za kazdym razem byl zwracana ten sam obiekt.

0

Możesz coś więcej napisać o drugim sposobie? Ja zawsze stosuję singletony w takich przypadkach i jest ok. Nie utrudniają mi też testowania. Ale chciałbym przy okazji poznać alternatywę.

0

Wszystko zależy co trzymasz w tym singletonie.
Moim zdaniem utrudnia testowanie ponieważ każdy unit tests powinien być niezależny a tu nagle pojawia się zasób który jest współdzielony pomiędzy wszystkie testy jednostkowe.
Oczywiście można to jakoś objeść poprzez czyszczenie i ustawianie obiektu "singletona" ale to nie jest zalecana metoda.

0

Jak to zrobic przy uzyciu ninjecta jest opisane tutaj: https://github.com/ninject/ninject/wiki/Object-Scopes
Strzelam, ze inne kontenery DI maja podobne mozliwosci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1