6
私はCF.NET & .NETで動作するライブラリを持っていますが、シリアル化は両方で異なります。結果として、CF.NETの下で生成されたXMLファイルは.NETの下では読み込めません。それは私の大きな問題です!ここでXmlSerializerは.NET 3.5とCF.NET 3.5の間で異なります
コードサンプル:
[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>
XML?
Arghhhhhh ...私はすべての私のビジネスモデル...バイナリ出力を再構築する必要があるこの方法をやって? –
@Arnaud - 直列化の時点でラッパーを追加するだけでは、モデル全体が実際に変更されるわけではありません。 –
シリアル化したい場合は、RemoteHostをMyRootに追加する必要があります。 –