我使用这个代码来获得MS Word 2007文档(.docx)中使用的String数组的标题:
dynamic arr = Document.GetCrossReferenceItems(WdReferenceType.wdRefTypeHeading);
使用调试器,我看到arr动态地分配了一个String数组,其中包含文档中所有标题的标题(约40个条目).到现在为止还挺好.
然后,我想访问字符串,但不管我怎么做,我得到以下异常:
InvalidCastException: Unable to cast object of type 'System.String[*]' to type 'System.String[]'.
我尝试过不同的访问字符串的方法:
按指数:
String arr_elem = arr[1];
通过转换为IEnumerable:
IEnumerable list = (IEnumerable)arr;
通过使用简单的foreach循环:
foreach (String str in arr) { Console.WriteLine(str); }
然而,无论我尝试什么,我总是会遇到与上述相同的例外.
任何人都可以解释我在这里失踪/我做错了什么?特别是String [*] – 这是什么意思?
解决方法
尝试
object arr_r = Document.GetCrossReferenceItems(WdReferenceType.wdRefTypeHeading); Array arr = ((Array) (arr_r)); string myHeading = (string) arr.GetValue(1);