通用类属性

时间:2015-01-02 16:41:45

标签: c# generics

我需要使我的类的属性通用..我有一个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'必须是不可为空的值类型   为了将它用作参数' T'在泛型类型或方法中   ' System.Nullable'

我想知道,我怎么能做到这一点?

3 个答案:

答案 0 :(得分:3)

在类型名称(?)后面省略CompleteCategory。它是class,所以它已经可以为空了。 ?字符用于生成非可空类型的nullabe,但是,正如错误消息所示,它不能用于已经可以为空的类型。

这种类型根本不需要是通用的来做你想要做的事情。

答案 1 :(得分:1)

删除可以为空的符号'?'对此:public CompleteCategory parent { get; set; }

答案 2 :(得分:0)

CompleteCategory是一个类(即reference type),因此它可以为null。 另一方面,值类型(如int或DateTime)不能为null(因此在这种情况下,您可以使用?强制其“可空性”)

所以只需从您的财产声明中删除?