我需要使我的类的属性通用..我有一个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'
我想知道,我怎么能做到这一点?
答案 0 :(得分:3)
在类型名称(?
)后面省略CompleteCategory
。它是class
,所以它已经可以为空了。 ?
字符用于生成非可空类型的nullabe,但是,正如错误消息所示,它不能用于已经可以为空的类型。
这种类型根本不需要是通用的来做你想要做的事情。
答案 1 :(得分:1)
删除可以为空的符号'?'对此:public CompleteCategory parent { get; set; }
答案 2 :(得分:0)
CompleteCategory
是一个类(即reference type),因此它可以为null。
另一方面,值类型(如int或DateTime)不能为null(因此在这种情况下,您可以使用?
强制其“可空性”)
所以只需从您的财产声明中删除?
。