Ho una libreria che gira sotto CF.NET &. NET ma la serializzazione differisce tra entrambi. Di conseguenza, un file XML generato sotto CF.NET non è leggibile sotto .NET, e questo è un grosso problema per me!XmlSerializer è diverso tra .NET 3.5 e CF.NET 3.5
Ecco il codice di esempio:
[Serializable, XmlRoot("config")]
public sealed class RemoteHost : IEquatable<RemoteHost>
{
// ...
}
public class Program
{
public static void Main()
{
RemoteHost host = new RemoteHost("A");
List<RemoteHost> hosts = new List<RemoteHost>();
hosts.Add(host);
XmlSerializer ser = new XmlSerializer(typeof(List<RemoteHost>));
ser.Serialize(Console.Out, hosts);
}
}
CF.NET xml:
<?xml version="1.0"?>
<ArrayOfConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<config Name="A">
</config>
</ArrayOfConfig>
.NET XML
<?xml version="1.0" encoding="ibm850"?>
<ArrayOfRemoteHost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RemoteHost Name="A">
</RemoteHost>
</ArrayOfRemoteHost>
Come posso modificare il mio programma al fine di generare la stessa XML?
Arghhhhhh ... Facendo in questo modo ho bisogno di ristrutturare tutto il mio modello di business ... Uscita binaria? –
@Arnaud - l'aggiunta di un wrapper nel punto di serializzazione non modifica realmente l'intero modello. –
Devo aggiungere tutto RemoteHost a MyRoot se voglio serializzarli, vedremo ... –