Es ist möglich, eine Klasse mit einem Parameter zu registrieren, von dem erwartet wird, dass er vom Erstellungsort übergeben wird?Delphi - Wie übergibt man einen Parameter vom Instantiator an einen Konstruktor im spring4d Dependency Injection Framework?
Ich weiß es so etwas wie dies geschehen kann:
GlobalContainer.RegisterType<TUserProcessor>.Implements<IUserUpgrader>.
AsTransient.DelegateTo(
function: TUserProcessor
begin
Result := TUserProcessor.Create(GetCurrentUser);
end
);
Aber es werden die Parameter an den Ausführungskontext binded wo der Container registriert wird und nicht, wo das Objekt gets intantiated.
So etwas ist zum Beispiel möglich?
GlobalContainer.Resolve<IMathService>([FCurrentUser]);
Ich kenne einige peoble Anwalt sehr einfache Konstrukteure haben, aber es gibt Zeiten, wenn ein Konstruktor Parameter zu gehen deutlich die Art und Weise sieht:
Das Objekt der Objektparameter arbeiten konstruiert muss, Also muss die Referenz erfüllt sein. Der Parameter macht diese Einschränkung auch deutlich sichtbarer, wenn man die Klasse betrachtet.
Sie können die Referenz in einer Methode oder Eigenschaft zuweisen und heben und Ausnahme in jeder anderen Methode, wenn Sie versuchen, das Objekt zu nutzen, ohne dass die Zuordnung zu machen .. Ich weiß nicht, wie diese Art von Code zu schreiben es einfach einem Zeitverschwendung, verwenden Sie einfach den Konstruktorparameter und überprüfen Sie dort. Weniger Code, desto besser IMO.
Auch das übergebene Objekt ist lokal für das Objekt, das das neue Objekt unter Verwendung des Containers (zum Beispiel ein Transaction-Objekt) konstruiert und einen Zustand hat (es ist kein neues Objekt, das ich mit dem Container bekommen kann).
Ich weiß nicht, von einer Überlastung des '' TContainer.Resolve ein Array-Parameter in Spring4D akzeptieren. Vermisse ich etwas? –
menjaraz
@menjaraz Es war nur und die Idee, wie es implementiert werden könnte (sicher kann es mit RTTI donde sein) –
Ok, das klingt wie eine Feature-Anfrage. Warum posten Sie das nicht auch für die [spring4d Google Group] (http://groups.google.com/group/spring4d)? – menjaraz