2
遵守以下代碼:如何在protobuf-net中序列化非列表<T>集合?
[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語句被忽略。
是否可以修復它而不使用代理?
我不想愚弄框架。我只是在學習它的能力。我已經提到過,我試圖移植一個現有的應用程序,它根本不是線路友好的。這隻代表更多的代理部門工作。感謝您的解釋。 – mark 2011-06-13 15:01:44
@Mark我真的很欣賞邊緣情況。你正在測試我,但只能起到積極的作用。 – 2011-06-13 16:01:17