.NET の XmlSerializer で問題が発生しました。
ここに、私が今作った小さな例があります。(@ gist https://gist.github.com/2d84be9041a3f9c06237も利用可能)
using System.IO;
using System.Xml.Serialization;
namespace XmlSerializingSample
{
internal class Program
{
private static void Main(string[] args)
{
var specialType = new SpecialType()
{
Id = 1,
Name = "test"
};
var serializer = new XmlSerializer(typeof (SpecialType));
var des = new XmlSerializer(typeof (BaseType));
using (var memeStream = new MemoryStream())
{
serializer.Serialize(memeStream, specialType);
memeStream.Flush();
memeStream.Seek(0, SeekOrigin.Begin);
var instance = des.Deserialize(memeStream); // Here it throws the exception
}
}
}
[XmlInclude(typeof(SpecialType))]
[XmlType("baseType")]
public class BaseType
{
public long Id { get; set; }
}
[XmlRoot("special")]
public class SpecialType : BaseType
{
public string Name { get; set; }
}
}
コードの 24 行目で、"{"<special xmlns=''> wurde nicht erwartet."}" [はい、ドイツ語です] という InvalidOperationException を取得します。
私が見つけたすべての投稿は、逆シリアル化されている基本型に XmlIncludeAttribute を追加した後、これが機能するはずです。私はsthを忘れましたか?
よろしく、 MacX