2010-05-11 4 views
2

je dois savoir comment je peux atteindre cet objectif en cours:architecture fichiers de mappage

nous avons deux applications différentes dans l'entreprise (App1, App2)

Appl peut exporter XML avec savoir éléments (ID, nom)

nous avons besoin App2 d'importer ces données mais App2 afficher différents éléments (carid, RARnom) et ce les éléments définis comme celui-ci avec les informations de cartographie

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

Comment puis-je obtenir ce que les classes ou de l'architecture, je vais développer ce avec C# je besoin d'une interface parce que nous pouvons supporter différents types de fichiers non seulement xml

Répondre

0

Votre problème ne sera-t-il pas résolu si vous introduisez 2 types de fichiers? Un fichier de configuration qui définit le mappage réel et les fichiers de données séparés qui ont le même format.

1

Vous pouvez utiliser des attributs pour mapper des propriétés à xmlelements.
Les classes Car1 et Car2 généreront le même xml lors de la sérialisation.

[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); 
    } 
}