Ich bin ein bisschen ein DI-Neuling, also vergib mir, wenn das die falsche Herangehensweise oder eine dumme Frage ist.Wie soll ich meine CTor-Parameter für DI/IOC bestellen?
Sagen wir, ich habe ein Formular, das eine Bestellung erstellt/aktualisiert, und ich weiß, dass es eine Liste von Produkten und Kunden abrufen muss, die angezeigt werden sollen. Ich möchte das Order-Objekt übergeben, das gerade bearbeitet wird, aber ich möchte auch ProductsService und CustomersService als Abhängigkeiten einfügen.
Also werde ich wollen, dass mein IoC-Container (je nachdem, mit welchem ich gehe) die Dienste liefert, aber es liegt an dem aufrufenden Code, um das Order-Objekt zu bearbeiten.
Sollte erkläre ich den Konstruktor als das Order-Objekt als ersten Parameter zu nehmen und die Produkteservice und CustomersService danach, zB:
public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)
... oder sollten die Abhängigkeiten stehen an erster Stelle und die Order-Objekt zuletzt, zB:
public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)
Ist es wichtig? Kommt es darauf an, welchen IoC-Container ich verwende? Oder gibt es einen "besseren" Weg?
Ok, das macht Sinn. Also benutze ich entweder property injection für alle meine Abhängigkeiten oder NUR Abhängigkeiten in den ctor und führe eine Eigenschaft für das "notwendige" Objekt ein? –
Ja, du hast Recht. Mischen Sie keine DP- und normalen Eigenschaften, da dies zu unvorhergesehenen Problemen führen und die Auswahl geeigneter IoC-Frameworks einschränken kann. – aku