Я использую сериал Ньютона json.net.При десериализации JSON в «TheFox»;он входит в защищенный ctor и получает значения свойств по умолчанию.Но не значения свойств в строке json.Могу ли я решить эту проблему, не используя dto или какой-либо другой фреймворк?
class TheFox
{
string _Id;
string _Name;
protected TheFox()
{
_Id = "Default Id";
_Name = "Default Name";
}
public TheFox(string id, string name) : this()
{
_Name = name;
_Id = id;
}
public string Id
{
get { return _Id; }
}
public string Name
{
get { return _Name; }
}
}
Это тест:
var fox = new TheFox("FoxId", "FoxTail");
var json = JsonConvert.SerializeObject(fox);
Console.WriteLine(json);
var settings = new JsonSerializerSettings ()
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
var returned = JsonConvert.DeserializeObject<TheFox> (json, settings);
Assert.IsTrue (returned.Id != "Default Id");
Assert.IsTrue (returned.Name != "Default Name");