【发布时间】:2009-12-19 04:31:24
【问题描述】:
嘿,我在构造 XmlSerializer 时遇到了麻烦,其中额外类型包含具有相同名称(但唯一全名)的类型。下面是一个说明我的场景的示例。
我无法操作的外部程序集中的类型定义:
public static class Wheel
{
public enum Status { Stopped, Spinning }
}
public static class Engine
{
public enum Status { Idle, Full }
}
我已经编写并可以控制的类:
public class Car
{
public Wheel.Status WheelStatus;
public Engine.Status EngineStatus;
public static string Serialize(Car car)
{
var xs = new XmlSerializer(typeof(Car), new[] {typeof(Wheel.Status),typeof(Engine.Status)});
var output = new StringBuilder();
using (var sw = new StringWriter(output))
xs.Serialize(sw, car);
return output.ToString();
}
}
XmlSerializer 构造函数抛出带有消息的 System.InvalidOperationException
“反映类型‘Engine.Status’时出错”
此异常具有 System.InvalidOperationException 类型的 InnerException 并带有消息
“类型 'Wheel.Status' 和 'Engine.Status' 都使用来自命名空间 '' 的 XML 类型名称 'Status'。使用 XML 属性为该类型指定唯一的 XML 名称和/或命名空间。”
鉴于我无法更改枚举类型,我如何构造一个能够成功序列化 Car 的 XmlSerializer?
【问题讨论】:
标签: c# .net xml-serialization