代码之家  ›  专栏  ›  技术社区  ›  Zev Spitz

createInstance与createInstanceWithArguments

  •  1
  • Zev Spitz  · 技术社区  · 8 年前

    generate Typescript definitions from the LibreOffice IDL (通过Doxygen生成的XML)。

    XMultiServiceFactory interface 有两种创建实例的方法: createInstance createInstanceWithArguments . 然而,我似乎无法找到哪些类型需要参数以及它们是什么,并且应该用 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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jim K    8 年前

    根据 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 .