我在 .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 行,我得到一个 InvalidOperationException 声明“{”<special xmlns=''> wurde nicht erwartet."}" [是的,它是德语]
我发现的所有帖子都指出,在被反序列化的基本类型上添加 XmlIncludeAttribute 之后,这应该可以工作。我是不是忘了……?
问候, MacX