Estoy empezando con Delphi Spring Framework y me preguntaba si la versión actual del contenedor DI de alguna manera permite delegar la construcción a un método de fábrica sin especificar un tipo de implementación.Delphi Spring DI: ¿Es posible delegar instancias de interfaz sin un tipo de implementación?
E.g. algo similar a esto:
GlobalContainer
.RegisterFactory<ISomeObject>(
function: ISomeObject
begin
Result := CreateComObject(CLASS_SomeObject) as ISomeObject;
end)
.Implements<ISomeObject> // could probably be implied from the above
.AsSingletonPerThread;
Como puede ver, mi caso de uso específico es la instanciación de objetos COM. En ese caso, la clase que implementa la interfaz que me interesa no es parte de mi aplicación, pero aún puedo crear instancias llamando al CreateComObject
/CoCreateInstance
. Sin embargo, parece que no tengo suerte ya que los registros en el Contenedor siempre parecen estar vinculados a una clase de implementación real.
Asumiendo que esto no es posible como tal en este momento, ¿cómo podrían resolverlo los expertos? ¿Crearías una clase contenedora o una clase ficticia o simplemente mantendrías los objetos COM fuera del contenedor DI y simplemente los crearías a través del CreateComObject
?
¡Gracias por la actualización! ¡Eso es brillante! :) –