Как реализовать GetObjectData в объекте с полем ISerializable, которое само имеет настраиваемую сериализацию? - PullRequest
0 голосов
/ 10 января 2019

Как правильно реализовать интерфейс ISerializable для класса, имеющего поле ISerializable?

Предположим, у меня есть следующие два класса, и я должен реализовать пользовательскую сериализацию для них обоих. Как мне реализовать сериализацию / десериализацию Foo?

public class Foo : ISerializable
{
    private int b;

    private Bar bar;

    protected Foo(SerializationInfo info, StreamingContext context)
    {
        b = info.GetInt32("b") + 1000;
        // How should I instantiate "bar" field here?
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("b", b - 1000);
        // How should I serialize "bar" field here?
    }
}

public class Bar : ISerializable
{
    private int a;

    public Bar(SerializationInfo info, StreamingContext context)
    {
        a = info.GetInt32("a") + 100;
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("a", a - 100);
    }
}
...