C# 如果属性未在API调用中传递,则将bool属性默认值设置为true
我正在使用带有json主体的url进行PUT调用以更新用户C# 如果属性未在API调用中传递,则将bool属性默认值设置为true,c#,api,C#,Api,我正在使用带有json主体的url进行PUT调用以更新用户 [{ "Name" : "John", }] 由于我没有在json正文中传递“Status”属性,因此它默认设置为false,因为false是布尔数据类型的默认值 但是,如果在进行API调用时未在json中传递属性,则需要将其设置为true作为默认值 我尝试使用序列化属性,如下所示: [OnDeserializing] void BeforeDeserialization(StreamingContext ctx)
[{
"Name" : "John",
}]
由于我没有在json正文中传递“Status”属性,因此它默认设置为false,因为false是布尔数据类型的默认值
但是,如果在进行API调用时未在json中传递属性,则需要将其设置为true作为默认值
我尝试使用序列化属性,如下所示:
[OnDeserializing]
void BeforeDeserialization(StreamingContext ctx)
{
this.Status = true;
}
但它不起作用
模型如下所示:
[DataContract (Namespace = "mynamespace")]
public class User
{
[DataMember]
public string Name { get; set; }
[DataMember]
public bool Status { get; set; }
}
请帮我解决这个问题。让我们尝试使用如果您反序列化到一个类,那么在该类中有一个默认为真值的bool成员。例如:
public class NameAndStatus
{
public string name { get; set;}
public bool status { get; set; } = true; // default value of true
}
如果
status
与json正文一起传入,则该成员将被设置为传入的值。否则,您将获得默认值,即true
您可以将默认值指定给布尔属性状态
类似
[DataContract (Namespace = "mynamespace")]
public class User
{
[DataMember]
public string Name { get; set; }
[DataMember]
public bool Status { get; set; } = true;
//^^^^^^^^ Set default value to Status property
}
这样,即使您传递了
状态
属性的值,默认值也将替换为实际值,否则它会将状态
的值设置为真@prasadelkikikikar请检查更新问题中的用户模型