Pytania otagowane jako dependency-injection

Wstrzykiwanie zależności, to wzorzec projektowy, w którym zależności (wystąpienia obiektów, właściwości) komponentu są ustawiane za pomocą konstruktora (ów), metod lub pól (właściwości). Jest to specjalna forma bardziej ogólnej inwersji zależności.

4
Jak obsługiwać „zależność cykliczną” we wstrzykiwaniu zależności
Tytuł mówi „Zależność kołowa”, ale nie jest to właściwe sformułowanie, ponieważ dla mnie konstrukcja wydaje się solidna. Zastanów się jednak nad następującym scenariuszem, w którym niebieskie części podano od partnera zewnętrznego, a pomarańczowy to moja własna implementacja. Załóżmy również, że jest więcej niż jeden ConcreteMain, ale chcę użyć określonego. (W …

3
Tłumy konstruujące jedno wdrożenie. DI beznadziejny? Używać lokalizatora usług?
Załóżmy, że mamy 1001 klientów, którzy konstruują swoje zależności bezpośrednio, zamiast akceptować zastrzyki. Według naszego szefa refaktoryzacja 1001 nie jest opcją. W rzeczywistości nie mamy nawet dostępu do ich źródła, tylko do plików klas. Powinniśmy „zmodernizować” system, przez który przechodzi 1001 klientów. Możemy refaktoryzować to, co lubimy. Zależności są częścią …


3
Czy wstrzykiwanie zależności przez biednego człowieka jest dobrym sposobem na wprowadzenie testowalności do starszej aplikacji?
W ubiegłym roku stworzyłem nowy system przy użyciu Dependency Injection i kontenera IOC. To nauczyło mnie wiele o DI! Jednak nawet po zapoznaniu się z pojęciami i właściwymi wzorami uważam za wyzwanie rozdzielić kod i wprowadzić kontener IOC do starszej aplikacji. Aplikacja jest na tyle duża, że ​​prawdziwa implementacja byłaby …

3
MVVM i wzorzec usługi
Buduję aplikację WPF przy użyciu wzorca MVVM. W tej chwili moje viewmodels wywołuje warstwę usługi, aby pobrać modele (co nie ma znaczenia dla viewmodel) i przekonwertować je na viewmodels. Używam iniekcji konstruktora, aby przekazać wymaganą usługę do modelu viewmodel. Jest łatwy do przetestowania i działa dobrze w modelach view z …

4
W ten sposób piszę ten kod, który można przetestować, ale czy coś jest z nim nie tak?
Mam interfejs o nazwie IContext. W tym celu tak naprawdę nie ma znaczenia, co robi, oprócz następujących czynności: T GetService<T>(); Metoda ta polega na sprawdzeniu bieżącego kontenera DI aplikacji i próbie rozwiązania zależności. Myślę, że dość standardowy. W mojej aplikacji ASP.NET MVC mój konstruktor wygląda tak. protected MyControllerBase(IContext ctx) { …

6
Kwestionując jeden z argumentów dotyczących struktur wstrzykiwania zależności: Dlaczego tworzenie wykresu obiektowego jest trudne?
Ramy wstrzykiwania zależności, takie jak Google Guice, dają następującą motywację do ich użycia ( źródło ): Aby zbudować obiekt, najpierw zbuduj jego zależności. Ale aby zbudować każdą zależność, potrzebujesz jej i tak dalej. Więc kiedy budujesz obiekt, naprawdę musisz zbudować wykres obiektu. Ręczne budowanie wykresów obiektów jest pracochłonne (...) i …

3
Czy ramy wstrzykiwania zależności stanowią ryzyko zależności?
Refaktoryzowałem istniejący system, aby używać wstrzykiwania zależności, a ta praca przebiega sprawnie. Po jakimś czasie zauważyłem, że duża liczba bibliotek wewnętrznych stała się zależna od używanego przeze mnie środowiska DI. W rezultacie cały projekt zależy teraz od tego frameworka innej firmy. Widziałem ironię w rozdzielaniu wszystkich zależności, uzależniając je od …


4
Czy ręczne wstrzykiwanie zależności jest lepszą alternatywą dla kompozycji i polimorfizmu?
Po pierwsze, jestem programistą na poziomie podstawowym; W rzeczywistości kończę stopień naukowy AS końcowym projektem zwieńczenia latem. W mojej nowej pracy, gdy nie ma dla mnie żadnego projektu (czekają, aby zapełnić zespół nowymi pracownikami), dostaję książki do czytania i nauki podczas oczekiwania - niektóre podręczniki, inne nie tak bardzo (jak …

8
Czy interfejs ujawniający funkcje asynchroniczne jest nieszczelną abstrakcją?
Czytam książkę Zasady, praktyki i wzorce wstrzykiwania zależności i czytam o koncepcji nieszczelnej abstrakcji, która jest dobrze opisana w książce. Obecnie refaktoryzuję bazę kodu C # przy użyciu wstrzykiwania zależności, aby zamiast blokowania były używane wywołania asynchroniczne. W tym celu rozważam interfejsy, które reprezentują abstrakcje w mojej bazie kodu i …

4
Termin techniczny oznaczający przeciwieństwo wstrzykiwania zależności?
Jest to raczej nomenklatura (pismo techniczne) niż kwestia czysto techniczna. Usiłuję napisać propozycję refaktoryzacji (i przypisać ją sobie), koncentrując się na rozszerzaniu zastrzyku zależności w naszej aplikacji. Chociaż używamy Springa do autouzupełniania fasoli, wciąż istnieją przypadki, w których instancja korzysta z fasoli MyClass obj = new MyClass(...), którą można całkowicie …

2
Jaka jest praktyczna różnica między stylami wstrzykiwania zależności?
Jestem nowy w zastrzykach zależności i mam kilka pytań na temat tego, jaki styl powinienem zastosować w swoich aplikacjach. Właśnie przeczytałem Inversion of Control Containers i wzorzec Dependency Injection autorstwa Martina Fowlera, ale nie mogę dostrzec praktycznej różnicy między konstruktorem, seterą i iniekcją interfejsu. Wydaje mi się, że powody używania …

2
Wstrzykiwanie zależności za pomocą n-tierowego rozwiązania Entity Framework
Obecnie projektuję rozwiązanie n-tier, które wykorzystuje Entity Framework 5 (.net 4) jako swoją strategię dostępu do danych, ale martwię się, jak włączyć wstrzykiwanie zależności, aby uczynić go testowalnym / elastycznym. Mój obecny układ rozwiązania jest następujący (moje rozwiązanie nazywa się Alcatraz): Alcatraz.WebUI : Projekt strony internetowej asp.net, interfejs użytkownika, odwołuje …

3
IValidatableObject vs. Single Responsibility
Podoba mi się punkt rozszerzalności MVC, pozwalający modelom widoków na implementację IValidatableObject i dodanie niestandardowej weryfikacji. Staram się, aby moje Kontrolery były szczupłe, ponieważ ten kod jest jedyną logiką sprawdzania poprawności: if (!ModelState.IsValid) return View(loginViewModel); Na przykład model widoku logowania implementuje IValidatableObject, pobiera obiekt ILoginValidator poprzez wstrzyknięcie konstruktora: public interface …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.