文件映射架构

时间:2010-05-11 08:27:24

标签: c# architecture design-patterns

我需要知道如何通过课程实现这一目标:

我们在公司有两个不同的应用程序(App1,App2)

Appl可以导出包含已知项目(ID,名称)的xml

我们需要app2来导入这些数据,但App2会显示不同的项目(CarID,CarName) 并且这些项目使用映射信息

定义
<CarID>
<Mapping name="ID"/>
</CarID>
<CarNAme>
 <Mapping name="Name"/>
</CarNAme>"

我如何以类或架构来实现这一点,我将用c#开发它 我需要一个接口,因为我们可能支持不同类型的文件而不仅仅是xml

2 个答案:

答案 0 :(得分:1)

您可以使用属性将属性映射到xmlelements 在序列化时,类Car1Car2将生成相同的xml。

[Serializable]
[XmlRoot("Car")]
public class Car1
{
    [XmlElement("CarId")]
    public int Id { get; set; }
    [XmlElement("CarName")]
    public string Name { get; set; }
}
[Serializable]
[XmlRoot("Car")]
public class Car2
{
    public int CarId { get; set; }
    public string CarName { get; set; }
}

[TestFixture]
public class CarTest
{
    [Test]
    public void SerializationTest()
    {
        var ms = new MemoryStream();
        var car1 = new Car1 {Id = 10, Name = "Car1"};
        var xs = new XmlSerializer(typeof(Car1));
        var tw = new StreamWriter(ms);
        xs.Serialize(tw, car1);

        ms.Seek(0, SeekOrigin.Begin);
        xs = new XmlSerializer(typeof(Car2));
        var tr = new StreamReader(ms);
        var car2 = (Car2)xs.Deserialize(tr);

        Assert.AreEqual(car1.Id, car2.CarId);
        Assert.AreEqual(car1.Name, car2.CarName);
    }
}

答案 1 :(得分:0)

如果引入2种类型的文件,问题不会解决吗?配置文件,用于定义具有相同格式的实际映射和单独的数据文件。