作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 v2 rev 421。
当我保存 protobuf-net 生成的流并将其放入字符串实用程序时,它发现了许多重复的字符串。我说的是应用程序生成的字符串,它可以被实习,但字符串实习似乎默认不启用。
我如何启用它?
谢谢。
最佳答案
这里有两种不同类型的实习;反序列化时有实习 - 这总是启用的,所以如果数据中有重复,你应该只看到一个 .NET string
托管类中的实例,根据需要重复使用多次。
序列化时也有实习,以避免在序列化时将数据复制到流中。这是不是 默认情况下,原因很简单,protobuf 规范中没有定义这种行为;默认情况下,protobuf-net 尝试留在规范内,仅在选择加入的基础上使用扩展。
如果要为 protobuf-net=to=protobuf-net 使用启用此功能,请启用 AsReference
任何给定字符串的选项:
[ProtoMember(13, AsReference = true)]
public string Foo { get; set; }
List<string>
某处),并在您的数据中使用列表中的位置,即
// this is .... uglier, but probably easier if you need cross-platform
public int FooOffset {
get { return Foos.IndexOf(Foo); }
set { Foo = Foos[value]; }
}
关于.net - 如何在 protobuf-net 中启用字符串实习?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463460/
我是一名优秀的程序员,十分优秀!