我的Context包装器类
中有一个System.Globalization.CultureInfo类集合的缓存public Collection<System.Globalization.CultureInfo> Cultures
{
get
{
// Get the value from Redis cache
}
set
{
// Save the value into Redis cache
}
}
可以通过 MyContextWrapper.Current.Cultures 访问它。
使用protobuf-net序列化“Collection Cultures”的值时出现以下错误:
预计不会输入类型,也无法推断合同:System.Globalization.CultureInfo
我知道protobuf-net在课堂上需要[ProtoContract]和[ProtoMember]装饰,但这只适用于自定义用户定义的类。
我如何使用.NET预定义类,例如System.Globalization.CultureInfo。
甚至可以使用protobuf-net?
答案 0 :(得分:2)
你可以选择代理人。在序列化Collection之前通知protobuf-net。虽然我现在只使用内置文化,但您可以自己扩展它以添加附加数据以完全恢复文化。
示例强>
将CultureInfo转换为protobuf-net支持类型的代理。
RuntimeTypeModel.Default.Add(typeof(CultureInfo), false).SetSurrogate(typeof(CultureInfoSurrogate));
将它放在程序开头的某处(至少在序列化集合之前):
for /F
如果您还有其他问题,请在评论中告诉我们。