类序列化设计

问题描述 投票:0回答:1

我需要将3个不同的对象序列化为3个不同的XML。此外,我将反序列化它。

我的班级设计:

class Program
{
    public static void Main()
    {
        CarsPersistence cars = new CarsPersistence()
        {
            Cars = new Car[]
            {
                new Car{ Name = "Car1", Speed = 201},
                new Car{ Name = "Car2", Speed = 202},
                new Car{ Name = "Car3", Speed = 203},
                new Car{ Name = "Car4", Speed = 204},
                new Car{ Name = "Car5", Speed = 205},
            }
        };

        WaysPersistence ways = new WaysPersistence()
        {
            Ways = new Way[]
            {
                new Way{Number = 100, Length = 200 },
                new Way{Number = 101, Length = 201 },
                new Way{Number = 102, Length = 202 },
                new Way{Number = 103, Length = 203 },
                new Way{Number = 104, Length = 204 },
                new Way{Number = 105, Length = 205 },
                new Way{Number = 106, Length = 206 },
                new Way{Number = 107, Length = 207 },
            }
        };

        CarsWaysPersistence carsWays = new CarsWaysPersistence()
        {
            CarsWays = new KeyValuePair<Car, Way>[]
            {
                new KeyValuePair<Car, Way>(cars.Cars[0], ways.Ways[2]),
                new KeyValuePair<Car, Way>(cars.Cars[3], ways.Ways[1])
            }
        };
    }
}

[Serializable]
public class Car
{
    public int Speed { get; set; }
    public string Name { get; set; }

}

[Serializable]
public class CarsPersistence
{
    public Car[] Cars { get; set; }
}

[Serializable]
public class Way
{
    public int Number { get; set; }
    public int Length { get; set; }
}

[Serializable]
public class WaysPersistence
{
    public Way[] Ways { get; set; }
}

public class CarsWaysPersistence
{
    public KeyValuePair<Car, Way>[] CarsWays { get; set; }
}

我将在不同的XML文件中序列化3个持久性类(CarsPersistence,WaysPersistence,CarsWaysPersistence)。

我的问题是重复:CarsWaysPersistence有Car和Way对象,它们已经包含在其他XML文件中。可能,我无法在XML文件中保存引用。

如何解决这种重复问题。谢谢

c# xml serialization
1个回答
1
投票

1)序列化所有汽车。 2)序列化所有方式。 3)使用汽车的Name作为唯一标识符。您还必须为Way提供一些独特的钥匙。这将允许您通过键映射它们:<car_name, way_key>

© www.soinside.com 2019 - 2024. All rights reserved.