Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果属性未在API调用中传递,则将bool属性默认值设置为true_C#_Api - Fatal编程技术网

C# 如果属性未在API调用中传递,则将bool属性默认值设置为true

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)

我正在使用带有json主体的url进行PUT调用以更新用户

[{
"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请检查更新问题中的用户模型