通用 class 属性
Generic class property
我需要为我的 class 设置一个通用属性 .. 我有一个 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; }
}
但他给我这个错误:
Error 1 The type 'CompleteCategory' must be a non-nullable value type
in order to use it as parameter 'T' in the generic type or method
'System.Nullable'
我想知道,我该怎么做??
只需省略类型名称后的 ?
(CompleteCategory
)。它是一个 class
,因此它已经可以为 null。 ?
字符用于使不可为 null 的类型为 nullabe,但是,正如错误消息所说,它不能用于已经可以为 null 的类型。
该类型根本不需要是通用的即可执行您要执行的操作。
删除可为空的符号“?”为此:public CompleteCategory parent { get; set; }
CompleteCategory
是一个 class(即 reference type),因此它可以为空。
另一方面,值类型(如 int 或 DateTime)不能为 null(因此在这种情况下,您可以使用 ?
强制其 "nullability")
所以只需从您的 属性 声明中删除 ?
。
我需要为我的 class 设置一个通用属性 .. 我有一个 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; }
}
但他给我这个错误:
Error 1 The type 'CompleteCategory' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'
我想知道,我该怎么做??
只需省略类型名称后的 ?
(CompleteCategory
)。它是一个 class
,因此它已经可以为 null。 ?
字符用于使不可为 null 的类型为 nullabe,但是,正如错误消息所说,它不能用于已经可以为 null 的类型。
该类型根本不需要是通用的即可执行您要执行的操作。
删除可为空的符号“?”为此:public CompleteCategory parent { get; set; }
CompleteCategory
是一个 class(即 reference type),因此它可以为空。
另一方面,值类型(如 int 或 DateTime)不能为 null(因此在这种情况下,您可以使用 ?
强制其 "nullability")
所以只需从您的 属性 声明中删除 ?
。