如何在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语句将被忽略。 是否可以在不使用代理的情况下进行修复?     
已邀请:
        列表等映射到.proto规范中的\“ repeated \”语法。直接从父对象直接嵌入。无法存储任何其他元数据。 已对代码进行了调整,以突出显示此内容,而不是默默地忽略它。 您可以指定要使用的默认具体类型,但只能如此。     

要回复问题请先登录注册