Ich bin aus der ganzen IoC-Geschichte schon zu lange raus und habe viel vergessen. Es ist wahrscheinlich trivial. Warum geht folgendes nicht?
Delphi-Quellcode:
interface type
IInterface1 = interface(IInterface)['{CA4E8F76-A514-479E-A195-725FCC04A1AB}'] end;
IInterface2 = interface(IInterface) ['{E97AD64A-8148-47F9-96D2-5187B60EF28D}']end;
TMyObject = class(TInterfacedObject, IInterface1, IInterface2)
//
end;
implementation uses Spring.Container;
initialization
GlobalContainer().RegisterType<TMyObject>()
.Implements<IInterface1>('MyObject')
.Implements<IInterface2>('MyObject');
end.
Das zweite
Implements
wirft mir eine
Exception, der Service-Name "MyObject" sei schon belegt. Ich verstehe nicht ganz, warum: Warum gilt der Name im gesamten Container? Er müsste doch nur für das Interface gelten?
Als Behelfslösung habe ich es nun einfach in zwei Container aufgespalten, aber das kann es wahrscheinlich nicht gewesen sein...