C# 如何重用序列化结果?
这可能是一种奇怪的情况,但这里是这样的:我有两个可序列化的类A和B。在A的实例被序列化为字节数组后,B的实例将引用A的实例。当B的实例被序列化时,我想利用A已经序列化的事实,以避免将同一事物序列化两次。下面是一些示例代码:C# 如何重用序列化结果?,c#,serialization,C#,Serialization,这可能是一种奇怪的情况,但这里是这样的:我有两个可序列化的类A和B。在A的实例被序列化为字节数组后,B的实例将引用A的实例。当B的实例被序列化时,我想利用A已经序列化的事实,以避免将同一事物序列化两次。下面是一些示例代码: [Serializable] class A { // Holds some stuff } [Serializable] class B { A aMember; public B(A data) { aMember = d
[Serializable]
class A
{
// Holds some stuff
}
[Serializable]
class B
{
A aMember;
public B(A data)
{
aMember = data;
}
// Some other stuff
}
class Wubwub
{
void SerializeSomeThings()
{
var formatter = new BinaryFormatter();
var foo = new A();
byte[] serializedA;
using (var firstStream = new MemoryStream())
{
formatter.Serialize(firstStream, foo);
serializedA = firstStream.ToArray();
}
// Later on...
var bar = new B(foo);
using (var secondStream = new MemoryStream())
{
// How do I take advantage of serializedA?
formatter.Serialize(secondStream, bar);
}
}
}
我是序列化新手,所以请告诉我这是不可能的还是没有任何意义。谢谢 只要它在同一个类下,您就可以使用构造函数和getter setter来创建您的advance,您可以扩展它吗?以什么方式使用构造函数和getter/setter?不清楚您是否可以这样做
BinaryFormatter
是一个图形序列化程序,为了保留引用,它在序列化时为每个对象分配运行时ID。见例。如果尝试将一个BinaryFormatter
会话中的序列化流嵌入到另一个会话中,则运行时ID可能会冲突和/或引用将不会被保留。只要它位于同一个类下,您就可以使用构造函数和getter setter对advance进行扩展吗?以什么方式使用构造函数和getter/setter?不清楚您是否可以这样做BinaryFormatter
是一个图形序列化程序,为了保留引用,它在序列化时为每个对象分配运行时ID。见例。如果尝试将一个BinaryFormatter
会话中的序列化流嵌入到另一个会话中,则运行时ID可能冲突和/或引用将无法保留。