2

さて、私は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イベントにあります)。アップロードするファイルを選択すると、このエラーが表示されます。理由は何ですか。

助けてくれてありがとう!

4

3 に答える 3

4

これは「オブジェクト参照エラー」ではなく、NullReferenceExceptionのインデックス演算子であるにアクセスしようとしていることが原因itemですnull

ステートメントの行にブレークポイントを設定ifし、さまざまな変数にマウスを合わせると、これを見つけることができます。

これを修正するにproperties.ListItemは、null以外の値が含まれていることを確認するか、次の場合に別のチェックを挿入します。

if (item == null || item["Name"] == null)
于 2012-09-06T21:00:27.133 に答える
0

SPListItem itemがnullであるため、おそらくエラーが発生しました。null変数にアクセスすることはできません。コードを次のように更新してみてください。

       SPListItem item = properties.ListItem;

       if (item == null || item["Name"] == null) 
           return; //or better yet, log
于 2012-09-06T21:00:56.237 に答える
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にはnull のようです!item単なる参考です。

于 2012-09-06T21:02:36.470 に答える