【问题标题】:createInstance vs createInstanceWithArgumentscreateInstance 与 createInstanceWithArguments
【发布时间】:2017-08-30 09:49:10
【问题描述】:

我正在尝试generate Typescript definitions from the LibreOffice IDL(通过 Doxygen 生成的 XML)。

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 / Windows 10 64 位)

(原贴ask.libreoffice,无人回答。)

【问题讨论】:

    标签: typescript libreoffice uno


    【解决方案1】:

    根据Service Manager dev guide

    服务定义应该描述每个元素的含义。

    我认为这意味着如果需要任何参数,IDL 文件应该说明什么。例如,在源代码文件/offapi/com/sun/star/configuration/ConfigurationProvider.idl中,有参数的详细描述,并且cmets声明也可以创建不带任何参数的实例。 (但是代码没有显示参数;它仅在 cmets 中进行了解释)。

    看起来该文件中的所有相关信息都已包含在ConfigurationProvider 的在线文档中,因此无需实际查看 IDL 文件。

    对比com.sun.star.frame.Desktop,它不带参数,如https://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Using_the_Desktop的示例所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2013-02-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多