Delphi Spring DI :Можно ли делегировать создание экземпляра интерфейса без реализующего типа?

Я только начинаю работать с Delphi Spring Framework, и мне интересно, позволяет ли текущая версия контейнера DI каким-то образом делегировать построение фабричному методу без указания типа реализации?

Например. нечто подобное:

GlobalContainer
 .RegisterFactory<ISomeObject>(
    function: ISomeObject 
    begin 
      Result := CreateComObject(CLASS_SomeObject) as ISomeObject; 
    end)
 .Implements<ISomeObject>  // could probably be implied from the above
 .AsSingletonPerThread;

Как видите, мой конкретный вариант использования — создание экземпляров COM-объектов. В этом случае класс, реализующий интересующий меня интерфейс, не является частью моего приложения, но я все равно могу создавать экземпляры, вызывая CreateComObject/ CoCreateInstance. Однако, похоже, мне не повезло, поскольку регистрации в контейнере всегда кажутся привязанными к реальному реализующему классу.

Предполагая, что это невозможно как таковое в данный момент, как бы вы, эксперты, решили это? Будете ли вы создавать класс-оболочку или фиктивный класс, или вы просто сохраните COM-объекты вне контейнера DI и просто создадите их экземпляры через CreateComObject?

7
задан Stefan Glienke 3 July 2012 в 16:27
поделиться