小编Boo*_*mit的帖子

当 JSON 中缺少属性且不可为 null 时,如何抛出 JsonSerializationException?

当反序列化缺少属性的 JSON 字符串时,我的类中的这些属性将使用其默认值进行填充。我想更改JsonSerializerSettings,以便如果 JSON 中缺少某个属性并且该属性在类中不可为空,则会引发异常。相反,当属性可为空时,则不需要它。

我知道属性是可能的,但我想要一个通用设置。

JsonSerializerSettings settings = new JsonSerializerSettings();
MyParameters parms = JsonConvert.DeserializeObject<MyParameters>(json, settings);
Run Code Online (Sandbox Code Playgroud)

例子:

public class MyParameters
{
    public string Message1 { get; set; }
    public string Message2 { get; set; }
    public int MyInt { get; set; }
    public int? MyNullableInt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以下 JSON 应该是可反序列化的:

{
    "Message1": "A message",
    "MyInt ": 1
}
Run Code Online (Sandbox Code Playgroud)

结果:

Message1 = "A message"
Message2 = null
MyInt = 1
MyNullableInt = null
Run Code Online (Sandbox Code Playgroud)

但以下 JSON 应该会导致异常,因为 …

c# json.net

5
推荐指数
1
解决办法
870
查看次数

铸造通用对象的方法c#

我有几个对象具有相同的属性相应的对象.

class Source1
{
    int id;
    string name;
    DateTime date;
}

class Destination1
{
    int id;
    string name;
    DateTime date;
}

class Source2
{
    int id;
    string code;
    double price;
}

class Destination2
{
    int id;
    string code;
    double price;
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个泛型类型的方法,可以将对象强制转换为相应的对象.

public TDestination Cast<TSource, TDestination>(TSource source)
{
    //TDestination destination = (TDestination) source;
    return destination;
}
Run Code Online (Sandbox Code Playgroud)

c# generics casting

1
推荐指数
1
解决办法
117
查看次数

标签 统计

c# ×2

casting ×1

generics ×1

json.net ×1