2014-01-21 3 views
0

필요한 API에 대한 JSON.NEt 출력과 일치하도록이 형식으로 개체 목록을 채우려고합니다. 하지만 전체 블록에서 .Add() ...로 시작하는 NullReferenceException을 얻고 있습니다. 뭔가 빠졌습니까?중첩 클래스의 인스턴스화 단축형

foreach(var item in emailsToUpload.payload) 
    { 
     hubPayload.Add(new HubEmailItem() 
     { 
      email = item.Email, properties = 
      { new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") }, 
       new HubEmailTuple() { property = "other property", value = "other value" } 
      } 
     }); 
    } 

업데이트 :

public class HubEmailItem 
{ 
    public String email { get; set; } 
    public List<HubEmailTuple> properties { get; set; } 
} 
+0

'emailsToUpload.payload' 컬렉션에'null' 개체가 있습니까? –

+0

'hubPayload'가 초기화 되었습니까? –

+0

'hubPayload'를 인스턴스화하는 것을 잊었습니까? –

답변

2

이와 같은 일반적인 목록에는이 구문을 사용할 수 없습니다.

properties = 
     { new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") }, 
      new HubEmailTuple() { property = "other property", value = "other value" } 
     } 

당신은 new List<HubSpotEmailTuple>

properties = new List<HubSpotEmailTuple> 
     { new HubEmailTuple() { property = "date", value = (DateTime.Now).ToString("d") }, 
      new HubEmailTuple() { property = "other property", value = "other value" } 
     } 

주를 추가해야합니다 :

int[] a = {0, 2, 4, 6, 8}; 

하지만이되지 않습니다 : :이 유효

// wrong 
List<int> a = {0, 2, 4, 6, 8}; 

// correct 
List<int> a = new List<int> {0, 2, 4, 6, 8}; 

이 문서를 살펴 보자 : http://msdn.microsoft.com/en-us/library/aa664573(v=vs.71).aspx

+0

당신은 정확합니다. 그냥 효과가있었습니다. 감사! 최소 1 분 안에 받아 들일 것입니다. – RealityDysfunction

+0

와우, 나는 컴파일 에러를 일으키지 않았다는 것에 놀랐다 : -O –

+0

@RealityDysfunction 나는 이것에 대해서 잘못 생각했다. 단지 주목했다. 배열을 초기화 할 때만이 구문을 사용할 수있다 :'int [] a = {0, 2, 4, 6, 8}; 그래서 이것은 유효하지 않습니다 : int [] a; a = {0, 2, 4, 6, 8};'그냥 명심하십시오 :)) –

1

초기화 목록은 당신이를 통해 반복되는 항목 중 하나 인 경우에이 예외를 던질 수있는 유일한 방법입니다. Email 속성을 사용하고 있는데 항목 중 하나가 null이고 예외가 발생하고있는 것으로 보입니다.

email = item.Email //causes NullReferenceException when item is null 

이 참으로 item == null에 해당하는 경우 트리거 될 foreach 루프의 첫 번째 중괄호에서 조건부 중단 점을 설정하여 해당하는 경우를 확인할 수 있습니다.

+0

이것은 내 의견에 의미가있는 것입니다. +1. –

+0

첫 번째 항목에서 멈추고 전자 메일이 null이 아닙니다. 나는 디버그하는 동안 그것을 가리키며 가치가있다. – RealityDysfunction

+0

컬렉션의 새 HubEmailItem 만들기 및 추가를 별도의 문으로 분리하여 추가 또는 구성으로 인해 문제가 발생하는지 확인하는 방법은 무엇입니까? –

관련 문제