我有一个运行.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屋!
查看全文
|