Xml解析器错误 [英] Xml parser error

查看:79
本文介绍了Xml解析器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述








我有一个运行.NETFramework 4.6.1的应用程序,对抽象类和继承类型使用xml序列化,方法几乎与此$相同b $ b XML序列化和继承类型 ,效果很好。但在将应用程序移植到UWP .NETCore之后,我遇到了一个奇怪的异常。这是一个重现它的简单示例。

public class ClassToSerialize
{
    [XmlElement(Type =
typeof(CustomSerializer<AnotherOne>))]
    public AnotherOne anotherOne;

    public ClassToSerialize()
    {
    }
}

public abstract class
AnotherOne
{
    public AnotherOne()
    {
    }
}

public class CustomSerializer<TType> :
IXmlSerializable
{
    public CustomSerializer()
    {
    }

    public CustomSerializer(TType data)
    {
        m_data = data;
    }

    public static
implicit operator CustomSerializer<TType>(TType data)
    {
        return data == 
null ? null : new
CustomSerializer<TType>(data);
    }

    public static
implicit operator TType(CustomSerializer<TType> obj)
    {
        return obj.m_data;
    }

    private TType m_data;

    public XmlSchema
GetSchema()
    {
        return null;
    }

    public void
ReadXml(XmlReader reader)
    {
    }

    public void
WriteXml(XmlWriter writer)
    {
    }
}

和为此类型创建XmlSerializer

XmlSerializer sr = new XmlSerializer(typeof(ClassToSerialize));

导致异常

System.InvalidOperationException: TestApp.AnotherOne, TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null is not assignable from TestApp.CustomSerializer`1[[TestApp.AnotherOne, TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]],
 TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

相同的代码适用于.netframework app。他们在.netcore中改变了什么或者我错过了什么吗?

推荐答案

您好Dmitry.Kovalchuk,

Hi Dmitry.Kovalchuk,

感谢您在此发帖。

我测试代码和
似乎错误与泛型有关。您可以避免使用泛型类型,或尝试直接序列化为下面的代码。

I test the code and it seems that the error is relating with generic. You could avoid using generic type, or try to serialize directly as below code.

XmlSerializer sr = new XmlSerializer(typeof(CustomSerializer<>).MakeGenericType(typeof(AnotherOne)));

最好的问候,

Wendy


这篇关于Xml解析器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆