[英].Net Binary Serialization inheritance
在C#上下文中,我有一个B类,它被标记为可序列化,并且继承自未标记为此类的A类。 我可以找到一种方法来序列化B的实例而不将A标记为可序列化吗?
尝试使用序列化代理。 Jeff Richter的精彩文章
我认为,如果您执行自定义序列化,则应该可以工作,即实现ISerializable
。 不过,这不是一个不错的选择:
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
class A {
public int Foo { get; set; }
}
[Serializable]
class B : A, ISerializable {
public string Bar { get; set; }
public B() { }
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
info.AddValue("Foo", Foo);
info.AddValue("Bar", Bar);
}
private B(SerializationInfo info, StreamingContext context) {
Foo = info.GetInt32("Foo");
Bar = info.GetString("Bar");
}
}
static class Program {
static void Main() {
BinaryFormatter bf = new BinaryFormatter();
B b = new B { Foo = 123, Bar = "abc" }, clone;
using (MemoryStream ms = new MemoryStream()) {
bf.Serialize(ms, b);
ms.Position = 0;
clone = (B)bf.Deserialize(ms);
}
Console.WriteLine(clone.Foo);
Console.WriteLine(clone.Bar);
}
}
您是否只想存储数据? 我还可以想到一种使用protobuf-net(而不是BinaryFormatter
,我认为您正在使用)来执行此操作的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.