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
?