- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个现有的代码库,它通过 NetDataContractSerializer
将几个简单的类保存到磁盘,但不幸的是,这些类没有用 [DataContract]
修饰,而是用 [可序列化]
。这工作正常,但现在我想向持久类添加一些新属性,同时仍然能够读取旧版本生成的文件。
假设这是类:
[Serializable]
public class Persisted
{
public int OldProperty {get;set;}
public int NewProperty {get;set;}
}
现在,当我反序列化旧文件时,我得到一个异常,因为它们不包含 NewProperty
。这是有道理的。所以我想忽略 NewProperty
,但是虽然有一个 [OptionalField]
属性让序列化程序忽略丢失的字段,但它不能应用于属性 - 仅字段.
所以我想我会使用 [DataContract]
和 [DataMember]
,它也有一个 IsRequired
属性,但这改变了序列化文件布局,无法读取旧数据文件。此外,您不能混合使用 [Serializable]
和 [DataMember]
- 如果序列化程序看到 [Serializable]
属性,它会忽略 [DataMember]
指令。
那么,除了对旧文件进行一次性转换的选项(可能,但不是我的第一选择),有没有办法让 NetDataContractSerializer 忽略现有 XML 序列化对象中的字段?
最佳答案
问题是当使用 Serializable
属性时,被序列化的是字段,而不是属性。由于您使用的是自动属性,因此字段是隐藏的,您无法向它们添加属性。
解决方案很简单——不要使用自动属性。
关于c# - 反序列化 DataContract/Serializable mish-mash 时的可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870244/
我在这个问题上很挣扎。我存储了一个 Hashie::Mash成一个字符串,我很难将它恢复为散列。 这是字符串: "--- !map:Hashie::Mash \ncreated_at: Mon Jul
我想遍历 Hashie::Mash 的键和值。 这是我的尝试: html = "Just look at these subscriptions!" client.subscriptions.each
正在从这个 JSON API 获取一些产品,我想知道 -- 我真的需要 Hashie::Mash 吗? 实时应用:http://runnable.com/U-QJCIFvY2RGWL9B/pretty
在 Ruby 中,有一个很棒的库叫做 Mash这是一个 Hash 但通过巧妙地使用 missing_method 可以转换: object['property'] 到 object.property
我有一个现有的代码库,它通过 NetDataContractSerializer 将几个简单的类保存到磁盘,但不幸的是,这些类没有用 [DataContract] 修饰,而是用 [可序列化]。这工作正
Java中的哪个库或集合应该相当于Ruby的hashie/Mash ? 最佳答案 由于编译时检查,我不相信您可以在 Java 中执行相同的操作。但是 JRuby 非常健壮,如果您不能简单地编写 Rub
我正在为使用 grape 创建的 API 获取 JSON 格式的用户输入。在特定参数中,我提供了以下格式的 JSON 数组。 "personal" : { "details" : { "f
我使用 pengwynn 的 LinkedIn gem 从 LinkedIn 获得身份验证。一切正常,我在回调中得到一个 Mash,如下所示: # id=2851554 is_current=tru
我有一个从 ruby 脚本生成的文件,它使用 hashie gem 将 hash 转换为 mash,如下所示 config.ip_details.ip_one.pub.heartbeat.ip1
我正在尝试使用 Chirpy将来自不同子目录的所有 CSS 文件混合到一个文件中。 这在我获得包含所有 CSS 的单个缩小文件的范围内有效。 我遇到的问题是引用的 CSS 文件包含图像的相对路径,因此
我是一名优秀的程序员,十分优秀!