2012-09-06 201 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

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

相关问题