Forum: Algorithmen, Datenstrukturen und Klassendesign
by Elvis,
2. Aug 2012
Man muss beim Programmieren aufpassen, dass man nicht dogmatisch wird.
Sicher muss eine gewisse Eleganz gewährleistet sein, damit man an dem Code arbeiten will. Keine Frage!
DI und property/ctor- Injection ermöglicht es dir für viele Business-Klassen fast ohne direkte Berührung mit dem DIC auszukommen. Aber wie mit allem im Leben: Wenn man es übertreibt, wird's frickelig und kompliziert.
...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Elvis,
1. Aug 2012
Woher kommt dein TUserFinder?
Hast du ihn direkt aus einem DIC gezogen, oder ist er eine Dependency einer anderen Klasse?
Ist er eine Dependency, dann würde der DIC ja autom. alles machen. Wenn nicht, dann mussu den selbst aus dem Container hochziehen.
Hier mal ein Bleistift, damit wir von der gleichen Sache reden. (Ich nehme einfach an, dass dein DI-Framework als Markierung für...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Elvis,
1. Aug 2012
Dann packe die IUserFactory als Property in dein UserDings und markiere sie als Dependency.
Wenn du jetzt den TUserFinder durch den DI-Container hochziehst, wird er dort eine passende Instanz von der Factory reinstecken. :-)
Ich selbst habe oft neben den ctor parametern und Properties, die vom DI autom. gefüllt werden, außerdem noch oft den Container in einem Vorfahren deklariert.
Je nach...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Elvis,
1. Aug 2012
Gib deinem TUserFinder (oder einem seiner Vorfahren) einfach eine Referenz auf den passen DI-Container mit.
Wenn du den TUserFinder per DI erzeugst, wäre sogar kaum eine Änderung an Code nötig. Da du diese Eiegenschaft ja als Dependency markieren kannst. :-)
Wenn du ganz faul bist, kannst du ja gleich die IUserFactory als Depency-Property deklarieren.
function TUserFinder.Find(const...