抽象类的XML反序列化器无法识别具体类

时间:2018-03-15 09:28:15

标签: c# xml deserialization abstract-class

我有一个输入XML,我想将其反序列化为一个派生自已知抽象基类的具体类。例如:

using System.IO;
using System.Xml.Serialization;

namespace SerializationTest
{
    [XmlInclude(typeof(ConcreteFoo))]
    public abstract class AbstractFoo
    {
    }

    [XmlRoot("ConcreteFoo")]
    public class ConcreteFoo : AbstractFoo
    {
    }

    class Program
    {
        static void Main(string[] args)
        {
            var xml = "<ConcreteFoo />";
            var serializer = new XmlSerializer(typeof(AbstractFoo));
            using (var stream = new StringReader(xml))
            {
                var obj = serializer.Deserialize(stream); 
            }
        }
    }
}

序列化程序无法将ConcreteFoo识别为AbstractFoo的派生类,并提供以下异常:

  

InvalidOperationException:&lt; ConcreteFoo xmlns =''&gt;没想到。

给定的输入XML是固定的,并且是使用序列化中的具体类创建的。任何提示?

0 个答案:

没有答案