我剛剛開始使用Delphi Spring Framework,並想知道當前版本的DI容器是否允許將構造委派給工廠方法而不指定實現類型?德爾福春天DI:是否有可能委託接口實例沒有實現類型?
E.g.類似的東西:
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
來創建實例。然而,看起來我運氣不佳,因爲Container中的註冊似乎總是綁定到實際的實施類。
假設目前這種情況不可能,那麼專家如何解決這個問題呢?你會創建一個包裝類還是虛擬類,還是隻是簡單地將COM對象從DI容器中取出,並通過CreateComObject
來實例化它們?
感謝您的更新!太精彩了! :) –