我在使用 Json.Net 将 JSON 字符串反序列化为通用类型时遇到一些问题。
我遇到的问题是泛型类的属性正在正确反序列化,在这种情况下,SomeStrings下面的属性将按预期填充,但该Data属性被保留null。
我希望有人能够阐明我所缺少的内容,因为序列化相同类型工作正常。
请参阅下面的类结构:
public class Foo
{
public List<string> SomeStrings { get; protected set; } = new List<string>();
protected Foo()
{
}
}
public class GenericFoo<TBar> : Foo
{
public TBar Data { get; private set; }
private GenericFoo() {}
public GenericFoo(TBar data)
{
Data = data;
}
public GenericFoo(TBar data, params string[] someStrings) :this(data)
{
SomeStrings = someStrings.ToList();
}
}
public class DataClass
{
public int Id { get; set; }
}
我正在运行的代码:
var settings = new JsonSerializerSettings()
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
var response = new GenericFoo<DataClass>(new DataClass()
{
Id = 10
}, "Test");
//serialises completely fine
var json = JsonConvert.SerializeObject(response, settings);
//Produces JSON: {"Data":{"Id":10},"SomeStrings":["Test"]}
//all properties deserialised fine, Data left null
var obj = JsonConvert.DeserializeObject<GenericFoo<DataClass>>(json, settings);
眼眸繁星
慕码人8056858
相关分类