Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重用序列化结果?_C#_Serialization - Fatal编程技术网

C# 如何重用序列化结果?

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

这可能是一种奇怪的情况,但这里是这样的:我有两个可序列化的类A和B。在A的实例被序列化为字节数组后,B的实例将引用A的实例。当B的实例被序列化时,我想利用A已经序列化的事实,以避免将同一事物序列化两次。下面是一些示例代码:

[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可能冲突和/或引用将无法保留。