Falls ich das richtig verstanden habe, ist dein Problem, dass du TColor in sich selbst injizieren willst.
Im Beispiel wird ein IExampleService in den THomeController injiziert und dieser dann aufgelöst. Der Container übergibt dann automatisch ein Lazy<IExampleService> in den constructor von THomeController wenn einer gebaut wird.
Angewendet auf dein Beispiel (nicht getestet):
Delphi-Quellcode:
type
IColor = interface;
TColor = class(TInterfacedObject, IColor)
End;
TExample = class
private
fService: Lazy<IColor>;
protected
public
constructor Create(const service: Lazy<IColor>);
function GetService: IColor;
property Service: IColor read GetService;
End;
Constructor TExample.Create(const service: Lazy<IColor>);
begin
inherited Create;
fservice := service;
End;
function TExample.GetService: IColor;
begin
Result := fService;
end;
procedure RegisterColorService();
begin
GlobalContainer.RegisterType<TColor>.Implements<IColor>('default').AsTransient.AsDefault;
GlobalContainer.RegisterType<TExample>;
GlobalContainer.Build;
Assert(GlobalContainer.Resolve<TExample>.Service is TColor);
end;