如何在protobuf-net中序列化非List 集合?
|
观察以下代码:
[ProtoContract]
public class C
{
[ProtoMember(1)]
public IList<string> Tags { get; set; }
}
class Program
{
static void Main()
{
var m = RuntimeTypeModel.Default;
m.AutoCompile = true;
m.Add(typeof(IList<string>), false).AddSubType(1, typeof(ObservableCollection<int>));
var c = new C { Tags = new ObservableCollection<string> { \"hello\" } };
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, c);
ms.Position = 0;
var c2 = Serializer.Deserialize<C>(ms);
Debug.Assert(c.Tags.Count == c2.Tags.Count);
Debug.Assert(c.Tags.GetType() == c2.Tags.GetType());
}
}
}
最后一个声明失败,因为c2.Tags是常规的List<T>
,而不是ObservableCollection<T>
。实际上,AddSubType语句将被忽略。
是否可以在不使用代理的情况下进行修复?
没有找到相关结果
已邀请:
1 个回复
棠媳鳖