Po prostu zaczynam od Delphi Spring Framework i zastanawiałem się, czy obecna wersja kontenera DI w jakiś sposób pozwala na przeniesienie konstrukcji do metody fabrycznej bez określenia typu implementacji?Delphi Spring DI: Czy można delegować instancję interfejsu bez typu implementacji?
E.g. coś podobnego do tego:
GlobalContainer
.RegisterFactory<ISomeObject>(
function: ISomeObject
begin
Result := CreateComObject(CLASS_SomeObject) as ISomeObject;
end)
.Implements<ISomeObject> // could probably be implied from the above
.AsSingletonPerThread;
Jak widać, moim szczególnym przypadkiem użycia jest tworzenie obiektów COM. W takim przypadku klasa implementująca interfejs, który mnie interesuje, nie jest częścią mojej aplikacji, ale nadal mogę tworzyć instancje, dzwoniąc pod numer CreateComObject
/CoCreateInstance
. Wydaje się jednak, że mam pecha, ponieważ rejestracje w Kontenerze zawsze wydają się być związane z rzeczywistą klasą wykonawczą.
Zakładając, że nie jest to obecnie możliwe, jak byście się rozwinęli? Czy utworzysz klasę opakowania lub klasę dummy, czy po prostu zatrzymasz obiekty COM poza kontenerem DI i po prostu utworzysz je przez CreateComObject
?
Dzięki za aktualizację! To genialne! :) –