对象引用未设置为对象的实例...错误?

时间:2012-09-06 20:55:44

标签: c# sharepoint event-handling sharepoint-list event-receiver

好的,所以我对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事件中),现在在我选择要上传的文件后显示此错误,任何想法为什么?< / p>

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

这不是“对象引用错误”,它是NullReferenceException引起的,因为您正在尝试访问item的索引运算符null

您可以通过在if语句的行中设置断点并将鼠标悬停在不同的变量上来找到它。

要解决此问题,请确保properties.ListItem包含非空值或在if中插入另一项检查:

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

答案 1 :(得分:0)

您可能收到错误,因为SPListItem item为空。您无法访问null变量。您可以尝试将代码更新为:

       SPListItem item = properties.ListItem;

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

答案 2 :(得分: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只是一个参考。