2015-01-02 2 views
-1

내 클래스 제네릭의 속성을 만들어야합니다. 나는 json이 있고 때로는 개체 속성이 null 값으로 도착할 수 있습니다. 예 :일반 클래스 속성

때때로 그녀는 다음과 같이 도착할 수 :이 같은

{ 
     "id": 111047, 
     "name": "TV", 
     "active": true, 
     "id_category": 318, 
     "parent": { 
      "id": 111046, 
      "name": "LCD", 
      "active": true, 
      "id_category": 317, 
      "parent": null, 
      "sellerId": null 
     }, 
     "sellerId": 50 
} 

때로는 :

{ 
    "id": 111046, 
    "name": "LCD", 
    "active": true, 
    "id_category": 317, 
    "parent": null, 
    "sellerId": 50 
} 

나는이 시도 :

public class CompleteCategory 
{ 
     public string id { get; set; } 
     public string name { get; set; } 
     public string active { get; set; } 
     public string id_category { get; set; } 
     public CompleteCategory? parent { get; set; } 
     public string sellerId { get; set; } 
} 

을하지만, 그는 나에게 오류를 제공 :

,

오류 1 유형 'CompleteCategory'는 일반 형태 또는 방식으로 파라미터로서 '선택 System.Nullable'

나는 것이를 'T'를 사용하기 위해 비 - 널 값 유형 있어야 내가 어떻게 이걸 만들 수 있는지 알고 있니?

+1

그 오류는 CompleteCategory가 이미 값 유형이 아니라 클래스임을 나타냅니다. 이는 CompleteCategory가 이미 null 가능하다는 것을 의미합니다. –

답변

3

형식 이름 (CompleteCategory) 뒤에 ?을 생략하면됩니다. class이므로 null이 이미 있습니다. ? 문자는 nullable이 아닌 nullabe를 만드는 데 사용되지만 오류 메시지에 나와 있듯이 이미 nullable 인 형식에서는 사용할 수 없습니다.

유형은 수행하려는 작업을 수행하기 위해 전혀 제네릭 일 필요가 없습니다.

1

nullable 기호 '?'를 제거하십시오. 님에게 : public CompleteCategory parent { get; set; }

0

은 클래스 (즉, reference type)이므로 null 일 수 있습니다.

그래서 당신의 속성 선언에서 ?을 삭제 (이 경우에 당신이 그들의 "Null 허용을"강제로 ?을 사용할 수 있도록) (INT 또는 날짜와 같은) 다른 쪽 값 유형에 은 null 일 수 없습니다.

+0

* 대부분의 * 값 유형은 null 일 수 없지만 예외가 있습니다. C#에는 nullable 값 형식이 있습니다 (특히 Nullable 은 nullable 값 형식 임). – Servy

+0

맞습니다.하지만 Nullable '을 "임시 해결책"으로 간주하여 값 유형을 null로 지정할 수 있습니다. 다른 예외 사항을 알고 있습니까? –

+0

글쎄, 거기에 포인터가 있습니다. 어떻게 그들을 분류하려고하는지는 어렵습니다. – Servy