泛型类属性

本文关键字:属性 泛型类 | 更新日期: 2023-09-27 18:36:01

我需要使我的类的属性泛型..我有一个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 类型"完整类别"必须是不可为空的值类型 为了在泛型类型或方法中将其用作参数"T" "系统.可为空"

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

泛型类属性

只需省略类型名称(CompleteCategory)后面的?。 这是一个class,所以它已经可以为空。 ?字符用于使不可为空的类型 nullabe,但如错误消息所述,它不能用于已可为空的类型。

该类型根本不需要泛型即可执行您尝试执行的操作。

删除可空符号"?"到这个:public CompleteCategory parent { get; set; }

CompleteCategory是一个

类(即引用类型),所以它可以为空。另一方面,值类型(如 int 或 DateTime)不能为 null(因此在这种情况下,您可以使用 ? 来强制其"可为空性")

因此,只需从属性声明中删除?即可。