Я только начинаю работать с 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
?