为什么XmlSerializer无法在.Net Core中序列化枚举值,但在.NET Framework中可以正常工作]] << [

问题描述 投票:4回答:1
。NET Core应用程序无法XML序列化包含枚举值的对象,而.NET Framework(4.7.2)成功。这是已知的重大更改吗?如果是这样,我应该如何解决?

代码示例

以下控制台应用程序在.NET Framework 4.7.2项目中不会引发异常:

public enum MyEnum { One, } public class ValueContainer { public object Value; } class Program { static void Main(string[] args) { XmlSerializer newSerializer = XmlSerializer.FromTypes( new[] { typeof(ValueContainer)})[0]; var instance = new ValueContainer(); instance.Value = MyEnum.One; using (var memoryStream = new MemoryStream()) { newSerializer.Serialize(memoryStream, instance); } } }

。NET Core 3.0控制台应用程序中的完全相同的代码在调用Serialize时引发以下异常:

System.InvalidOperationException HResult=0x80131509 Message=There was an error generating the XML document. Source=System.Private.Xml StackTrace: at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) at System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o, XmlSerializerNamespaces namespaces) at System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o) at CoreXml.Program.Main(String[] args) in C:\Users\vchel\source\repos\CoreXml\CoreXml\Program.cs:line 28 Inner Exception 1: InvalidOperationException: The type CoreXml.MyEnum may not be used in this context.

我在代码中做错了吗? .NET Framework和.NET Core之间是否有重大变化?

是否有解决方法?

更新

我应该指出,在.NET 4.7.2中进行序列化时,我得到以下(所需)Value的输出:

<Value xsi:type="xsd:int">0</Value>

我希望为.NET Core提出任何解决方案,以输出相同的XML,因为我需要保持与不使用.NET Standard的应用程序的现有文件和旧版本的兼容性。

摘要.NET Core应用程序无法XML序列化包含枚举值的对象,而.NET Framework(4.7.2)成功。这是已知的重大更改吗?如果是,我如何解决它?代码...

c# .net-core xml-serialization
1个回答
0
投票
嗯,不知道为什么会如此不同。但是我有一个类似下面的解决方法:
© www.soinside.com 2019 - 2024. All rights reserved.