XmlSerializer - 使用URI属性序列化对象时出错
问题描述:
我在使用Uri
属性序列化类时遇到问题。XmlSerializer - 使用URI属性序列化对象时出错
System.InvalidOperationException was unhandled
Message=There was an error reflecting type 'Foo.Story'.
// ...
InnerException: System.InvalidOperationException
Message=There was an error reflecting property 'MyURI'.
我想要此属性被序列化。什么是解决这个问题的方法?我应该声明某种类型的转换器,并使用URI的字符串表示形式吗?
答
Uri
类不可序列化为XML,因为它没有默认构造函数,并且它的所有属性都是只读的。作为一种变通方法,可以序列串来代替:
[XmlIgnore]
public Uri MyURI { get; set; }
[XmlElement("MyURI")]
public string MyURIAsString
{
get { return MyURI != null ? MyURI.AbsoluteUri : null; }
set { MyUri = value != null ? new Uri(value) : null; }
}
答
是否必须XmlSerializer
? DataContractSerializer
将工作:
using (var stream = File.Create(@"c:\Uri.xml"))
new DataContractSerializer(typeof(Uri)).WriteObject(stream, new Uri(@"http://www.contoso.com/"));
这里是一个很好的article凝聚了
可能的复制http://*.com/questions/1036492/how-to-xml-serialize-a-的差异URI – 2010-11-01 02:22:35