我刚开始接触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
来实例化它们?