Microsoft Office Interop:无法将带有[]的索引应用于类型'object'的表达式

问题描述 投票:0回答:2

以下Microsoft Office WORD VSTO Add-in的代码之前已成功获取文档标题。但是现在,它抛出了如下所示的错误:

string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"].Value;

错误

无法将[]的索引应用于'对象'类型的表达式

基于针对该问题的一些类似的在线解决方案(例如thisthis),我尝试了以下代码,但仍然遇到完全相同的错误。

问题:我在这里可能会缺少什么以及如何解决?

RefDocument.BuiltInDocumentProperties获得一个Microsoft.Office.Core.DocumentProperties collection,它代表文档的所有内置文档属性。

以下操作也给出了完全相同的错误

string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"].Value as string;

string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"] as string;
c# vsto office-interop
2个回答
0
投票

尝试

string sTitle = oActiveDoc.BuiltInDocumentProperties.Item("Title").Value;

0
投票

我建议使用var:

         string sTitle;
         var prop = oActiveDoc.BuiltInDocumentProperties["Title"];

         if (prop != null)
          {
              sTitle = prop.Value.ToString();
          }

0
投票

有几种方法可以弥合目前为止的例外情况:

  1. 使用dynamicobject参考。在Read BuiltInDocumentProperties/CustomDocumentProperties alway null with Word 2010?页面上了解有关此方法的更多信息。

  2. 使用Type.InvokeMember方法在.net框架中表示的后期绑定技术。

© www.soinside.com 2019 - 2024. All rights reserved.