2015-01-02 3 views
-1

Мне нужно сделать свойство моего класса generic .. У меня есть json, и иногда свойство объекта может прибыть с нулевым значением. Пример:Свойство общего класса

иногда она может прийти, как это:

{ 
     "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» должна быть не обнуляемым типом значения для того, чтобы использовать его в качестве параметра «T» в универсальном типе или методе «System.Nullable»

я бы как знаю, как я могу это сделать?

+1

Эта ошибка говорит вам, что CompleteCategory уже является классом, а не типом значений. Это означает, что CompleteCategory уже имеет значение NULL. –

ответ

3

Просто опустите ? после названия типа (CompleteCategory). Это class, поэтому он уже обнуляется. Символ ? используется для создания nullabe с нулевым типом, но, как говорится в сообщении об ошибке, он не может использоваться для типа, который уже имеет значение NULL.

Тип не обязательно должен быть общим, чтобы делать то, что вы пытаетесь сделать.

1

Удалить знак с нулевым значением '?' к этому: public CompleteCategory parent { get; set; }

0

CompleteCategory - класс (то есть a reference type), поэтому он может быть нулевым. На других типах стороны значения (например, междунар или DateTime) не может быть пустым (так что в этом случае вы можете использовать ?, чтобы заставить их «допустимость пустой»)

Так просто удалить ? из вашей декларации собственности.

+0

* Большинство типов значений не могут быть нулевыми, но есть исключения. C# имеет типы значений с нулевым значением (в частности, 'Nullable ' - тип значения NULL). – Servy

+0

Вы правы, но я считаю «Nullable ' a «обходным путем», чтобы сделать типы значений обнуляемыми. Знаете ли вы другие исключения? –

+0

Ну, есть указатели. Как вы пытаетесь классифицировать их ... сложно. – Servy

Смежные вопросы