2012-09-06 246 views
1

好吧,所以我完全不熟悉C#並試圖調試錯誤。基本上我試圖創建一個SharePoint列表的EventReceiver ......這是給我的,當我調試的對象引用錯誤代碼:未將對象引用設置爲對象的實例...錯誤?

public override void ItemAdding(SPItemEventProperties properties) 
    { 
     base.ItemAdding(properties); 

     SPListItem item = properties.ListItem; 

     if (item["Name"] == null) 
      return; //or better yet, log 

     string oldFileName = item["Name"].ToString(); 

什麼我做的是進入調試模式,並選擇要將文件添加到SharePoint庫(這是在ItemAdding事件中),現在在我選擇要上載的文件後顯示此錯誤,爲什麼?

感謝您的幫助!

+1

你應該用** sharepoint標記**這個問題 –

+0

你確定'properties.ListItem'不是null嗎? –

回答

4

這不是一個「對象引用錯誤」,它是由於您嘗試訪問item的索引運算符而造成的,這是null

通過在if語句的行中設置斷點並將鼠標懸停在不同的變量上,您可能已經發現了這一點。

爲了解決這個問題,確保properties.ListItem包含非空值或插入另一檢查您是否:

if (item == null || item["Name"] == null) 
+0

謝謝!這似乎工作,但我嘗試使用斷點,但是,只要我進入調試模式,我的斷點變成黃色,並懸停在它上面,我得到消息「斷點不會被擊中,沒有符號已經加載這個文件」任何想法爲什麼這是? –

+0

@TudorHofnar試圖保持它運行,最終符號將被加載並且斷點將被命中。 –

+0

有一個[相關的SO問題](http://stackoverflow.com/questions/2301216/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-d )提供了一些可能的解決方案。 – Adam

0

你可能得到的錯誤,因爲SPListItem item爲空。您無法訪問空變量。您可以嘗試更新您的代碼:

 SPListItem item = properties.ListItem; 

     if (item == null || item["Name"] == null) 
      return; //or better yet, log 
+0

謝謝!這解決了我的錯誤! –

+0

歡迎您! –

0
SPListItem item = properties.ListItem; 
System.Debug.Assert(item != null, "item is null."); 


if (item["Name"] == null) --DEBUGGER STOPS HERE 
    return; //or better yet, log 

似乎item或多個特定properties.ListItem爲空! 由於item只是一個參考。

+0

'properties.ListItem'和'item' *都是*引用。 – Adam

+0

對不起,那不是很清楚! –

相關問題