我正在编写一个程序,使用iTextSharp 5.5.10在pdf文件中检索嵌套书签的标题。
我编写了一个循环函数,它将Dictionary<string, object>
对象作为输入参数并返回List<string>
个对象,但不起作用。
public static List<string> bookmarksList(Dictionary<string, object> parent)
{
List<string> PDFbookmarks = new List<string>();
if (parent.ContainsKey("Kids"))
{
PDFbookmarks.Add(parent["Kids"].ToString());
Dictionary<string, object> child = parent["Kids"] as Dictionary<string, object>;
bookmarksList(child);
}
return PDFbookmarks;
}
我从Dictionary<string, object>
方法获得的GetBookmark(PDFReader)
对象。
撇开ToString()
方法显然没有给我实际孩子的头衔的事实,问题是我在第一次定期电话时得到NullReferenceException
:当我试图让孩子感染时函数中的变量,它得到一个null
指针。
Kids
键的关联值是IList<Dictionary<string, object>>
对象本身,如调试窗口所示:
System.Collections.Generic.List'1[System.Collections.Generic.Dictionary'2[System.String,System.Object]]]
(虽然这应该是List
对象,而不是IList
,我错了吗?)
所以我不明白为什么我得到一个null
指针而不是......
任何提示?
谢谢, 的Davide。
答案 0 :(得分:0)
我认为向下转换会有效,但事实并非如此。改变变量声明是我的一天。我还重写了整个功能,现在它完全按预期工作。
public static List<string> BookmarksList(Dictionary<string, object> parent, List<string> bookmarkList)
{
if (parent.ContainsKey("Kids"))
{
IList<Dictionary<string,object>> child = parent["Kids"] as IList<Dictionary<string, object>>;
foreach(Dictionary<string, object> tmpChild in child)
{
bookmarkList.Add(tmpChild["Title"].ToString());
MyClass.BookmarksList(tmpChild, bookmarkList);
}
}
return bookmarkList;
}