Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Spring4D: Warum kann ein Typ nicht unter dem selben Namen zwei Interfaces realisieren

  Alt 22. Dez 2014, 21:09
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...
  Mit Zitat antworten Zitat