protobuf-net OverwriteList en Byte Array

Lo que estoy haciendo es intentar enviar un IPEndpoint a través de protobuf-net y lo que observé es que al deserializar la matriz de 4 bytes en la dirección IP4, el código establecido recibe un valor de 8 bytes. Cuatro bytes que contienen la dirección original y 4 bytes más que contienen la dirección que se serializó. Al recorrer el código, he podido confirmar que cuando se llama a Deserialize, primero lee los bytes y luego establece sus bytes.

Después de leer un poco, aprendí sobre OverwriteList y, como se puede ver en el ejemplo a continuación, lo configuré como verdadero. Sin embargo, el configurador todavía recibe un valor de 8 bytes.

Alguien tiene idea de lo que estoy haciendo ma

Este código de muestra debería generar una excepción cuando se usa con protobuf-net r480, Visual Studio 2010 como una aplicación de consola .Net 4.0.

using ProtoBuf;
using System.Net;
using System.IO;

namespace ConsoleApplication1
{

    [ProtoContract]
    class AddressOWner
    {
        private IPEndPoint endpoint;

        public AddressOWner() 
        { endpoint = new IPEndPoint(new IPAddress(new byte[] {8,8,8,8}), 0); }

        public AddressOWner(IPEndPoint newendpoint)
        { this.endpoint = newendpoint; }

        [ProtoMember(1, OverwriteList=true)]
        public byte[] AddressBytes
        {
            get { return endpoint.Address.GetAddressBytes(); }
            set { endpoint.Address = new IPAddress(value); }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            AddressOWner ao = new AddressOWner(new IPEndPoint(new IPAddress(new byte[] { 192, 168, 1, 1 }), 80));

            MemoryStream ms = new MemoryStream();
            Serializer.Serialize(ms, ao);
            byte[] messageData = ms.GetBuffer();
            ms = new MemoryStream(messageData);
            AddressOWner aoCopy = Serializer.Deserialize<AddressOWner>(ms);
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta