Hallo, danke für die Antwort.
Zitat:
Das hat ja mit DI an sich erst einmal gar nichts zu tun.
Mit dem Prinzip an sich nicht, stimmt. Vielleicht habe ich mein Problem auch falsch beschrieben.
Den Artikel kannte ich noch nicht, danke. [Weak] ist mir ein Begriff, [unsafe] bisher noch nicht. Hat aber, erstmal, seinen Dienst getan:
Delphi-Quellcode:
TKnight = Class(Tinterfacedobject, Iknight)
Private
[Inject('tsword')]
FWeapon: IWeapon;
[Inject('tfist')]
FWeapon2: IWeapon;
[Inject('tknight')]
[unsafe]//unsafe attribute. Solves problem w/ manual construction
Fcompanion: Iknight;
{ [...]}
Public
Constructor Create(Companion: Iknight);
Destructor Destroy; Override;
{...}
End;
destructor tknight.destroy;
begin
fsecondknight:=nil;
inherited;
end;
procedure test;
var knight1,knight2:iknight;
begin
knight1:=tknight.create(nil);
knight2:=tknight.create(knight1);
knight1:=nil; //der Vollständigkeit halber
end;
Es geht mir aber weniger (vielleicht auch) um die normale Erstellung solcher von einander abhängigen Objekte, wie oben. Vielmehr gehts mir um das Automatisieren der Erstellung per Attribut (inject['companionclassname']). Wie kann ich festlegen, dass der zweite (n.te) KEINEN companion mehr braucht, oder der nur
bei Bedarf angelegt wird, statt automatisch beim Auffinden des [inject] eine Endlosrekursion anzustoßen?