2017-08-30 86 views
1

我正在嘗試generate Typescript definitions from the LibreOffice IDL(通過Doxygen生成的XML)。createInstance vs createInstanceWithArguments

XMultiServiceFactory interface有兩種創建實例的方法:createInstancecreateInstanceWithArguments。然而,我似乎無法找到哪些類型需要參數,它們是什麼,應該用createInstanceWithArguments實例化;以及哪些類型不需要參數,應該用createInstance實例化。

能夠定義基於傳遞給該方法的字符串參數將使基於這些重載靜態類型重載:

// automatically typed as com.sun.star.frame.Desktop 
let desktop = objServiceManager.createInstance('com.sun.star.frame.Desktop'); 

否則結果將必須顯式類型:

let desktop = objServiceManager.createInstance('com.sun.star.frame.Desktop') 
    as com.sun.star.frame.Desktop; 

如何從文檔中知道給定類型是否需要參數,以及這些參數是什麼?

(LibreOffice的5.3.5/10的Windows 64位)

(最初發佈於ask.libreoffice,沒有答案。)

回答

1

按照Service Manager dev guide

服務定義應該描述每個元素的含義。

我認爲這意味着IDL文件應該告訴如果需要任何參數。例如,在源代碼文件/offapi/com/sun/star/configuration/ConfigurationProvider.idl中,有參數的詳細描述,並且註釋說明也可以創建沒有任何參數的實例。 (但代碼不顯示參數;僅在註釋中解釋)。

看起來該文件中的所有相關信息已包含在ConfigurationProvider的聯機文檔中,因此不需要真正查看IDL文件。

com.sun.star.frame.Desktop(不帶參數)相反,如https://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Using_the_Desktop的示例所示。

相關問題