以下Microsoft Office WORD VSTO Add-in的代码之前已成功获取文档标题。但是现在,它抛出了如下所示的错误:
string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"].Value;
错误:
无法将[]的索引应用于'对象'类型的表达式
基于针对该问题的一些类似的在线解决方案(例如this和this),我尝试了以下代码,但仍然遇到完全相同的错误。
问题:我在这里可能会缺少什么以及如何解决?
Ref:Document.BuiltInDocumentProperties获得一个Microsoft.Office.Core.DocumentProperties collection
,它代表文档的所有内置文档属性。
以下操作也给出了完全相同的错误:
string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"].Value as string;
或
string sTitle = oActiveDoc.BuiltInDocumentProperties["Title"] as string;
尝试
string sTitle = oActiveDoc.BuiltInDocumentProperties.Item("Title").Value;
我建议使用var:
string sTitle;
var prop = oActiveDoc.BuiltInDocumentProperties["Title"];
if (prop != null)
{
sTitle = prop.Value.ToString();
}
有几种方法可以弥合目前为止的例外情况:
使用dynamic
和object
参考。在Read BuiltInDocumentProperties/CustomDocumentProperties alway null with Word 2010?页面上了解有关此方法的更多信息。
使用Type.InvokeMember方法在.net框架中表示的后期绑定技术。