c# - 没有setter无法反序列化类型

标签 c# xml

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

var dbData = readData(someType);//it is IList collection

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

var serializer = new XmlSerializer(dbData.GetType());

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

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

最佳答案

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

JsonConvert.DeserializeObject<T>(input);

关于c# - 没有setter无法反序列化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995957/

相关文章:

xml - 修改节点和所有子节点中属性的子字符串

C# - NHibernate带来多对多关系的多条记录

c# - 在已连接的客户端上处理套接字异常10060

c# - 在 Azure 上运行重复任务

java - 如何获取具有不同属性的XML标签的值?

xml - 如何通过 XSLT 选择随机项 XML?

C# 获取 %AppData% 的路径

c# - 如何在 asp.net 中的模式弹出窗口中创建错误模式弹出窗口

python - 使用 XPath 查找最上面的以下元素

android - Android ActionBar 中的操作项不可点击