2010-11-01 67 views
1

我在使用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的字符串表示形式嗎?

+0

可能的複製http://stackoverflow.com/questions/1036492/how-to-xml-serialize-a-的差異URI – 2010-11-01 02:22:35

回答

2

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; } 
} 
2

是否必須XmlSerializerDataContractSerializer將工作:

using (var stream = File.Create(@"c:\Uri.xml")) 
     new DataContractSerializer(typeof(Uri)).WriteObject(stream, new Uri(@"http://www.contoso.com/")); 

這裏是一個很好的article凝聚了

相關問題