没有 setter 就无法反序列化类型

Sim*_*mon 5 c# xml

我在数据库中有二进制序列化对象。它们是用 protobuf 序列化的。现在我需要生成一些查看器来查看数据库的内容。所以,我从数据库读取流并将其反序列化回对象。它有效,结果是对象列表:

var dbData = readData(someType);//it is IList collection
Run Code Online (Sandbox Code Playgroud)

现在,我想将此对象列表保存到文件中以查看数据库的内容。我认为最好将其保存为 xml。所以,我试过:

var serializer = new XmlSerializer(dbData.GetType());
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:无法反序列化类型“My.Entities.IdBase”,因为它包含没有公共 setter 的属性“Key”。

现在怎么办?我无法将类定义更改为具有 setter。我应该将对象保存为 json 还是纯文本?或者我应该提取所有属性和值并将其保存到某个 xml 中?任何代码示例?

Bri*_*hek 0

JSON.NET 就是这里的答案。你可以在nuget中找到它。像这样使用它:

JsonConvert.DeserializeObject<T>(input);
Run Code Online (Sandbox Code Playgroud)