sha*_*y__ 2 c# oop serialization json.net private-constructor
我需要序列化一个不能更改其源代码的类(将其视为事实),并且它来自不同的程序集。它只有一个构造函数
public class MyObject
{
string _s;
int _i;
internal MyObject(string s, int i)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
JsonConvert.SerializeObject(object)因此当然会失败。我想知道是否有一种方法可以使用Json.NET来序列化此类,而不必向其添加代码甚至标记。
如果您具有无参数的构造函数,则应该可以通过添加以下设置来做到这一点:
JsonSerializerSettings settings = new JsonSerializerSettings()
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
var serializedJson = JsonConvert.DeserializeObject<MyObject>(jsonString, settings);
Run Code Online (Sandbox Code Playgroud)
问题编辑后更新:
如果您没有任何 public构造函数,并且没有无参数构造函数,那么我只知道2个选项:
[JsonConstructor]属性添加到internal构造函数中(由于无法编辑类,在您的情况下这似乎不是一个选择)。