Pruebe el campo opcional al usar la serialización personalizada de .NET

 C Programming >> Programación C >  >> Tags >> .NET
Pruebe el campo opcional al usar la serialización personalizada de .NET

Bueno, un enfoque intrigante es que podrías usar GetEnumerator (foreach ) para iterar sobre los pares de nombre/valor, usando un switch en el nombre para manejar cada uno a su vez?

Sin embargo, la implementación parece un poco no estándar; del ejemplo aquí:

    SerializationInfoEnumerator e = info.GetEnumerator();
    Console.WriteLine("Values in the SerializationInfo:");
    while (e.MoveNext())
    {
        Console.WriteLine("Name={0}, ObjectType={1}, Value={2}",
             e.Name, e.ObjectType, e.Value);
    }

Pero parece que también puedes usar SerializationEntry :

[Serializable]
class MyData : ISerializable
{
    public string Name { get; set; }
    public int Value { get; set; }

    public MyData() { }
    public MyData(SerializationInfo info, StreamingContext context)
    {
        foreach (SerializationEntry entry in info)
        {
            switch (entry.Name)
            {
                case "Name":
                    Name = (string)entry.Value; break;
                case "Value":
                    Value = (int)entry.Value; break;
            }
        }
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("Name", Name);
        info.AddValue("Value", Value);
    }
}