2012-09-06 147 views
2

便攜式類庫中,我有一個包含具有XmlAnyElement屬性的成員的類。便攜式類庫,XmlAnyElementAttribute

public partial class VariableWebServiceResponse { 

    private List<System.Xml.XmlElement> anyField; 

    public VariableWebServiceResponse() { 
     this.anyField = new List<System.Xml.XmlElement>(); 
    } 

    [System.Xml.Serialization.XmlAnyElementAttribute(Order=0)] 
    public List<System.Xml.XmlElement> Any { 
     get { 
      return this.anyField; 
     } 
     set { 
      this.anyField = value; 
     } 
    } 
} 

這種類型的類完全在.NET 4.0,所以我有這樣的代碼:

private T Deserialize<T>(VariableWebServiceResponse response) 
    { 
     var name = typeof(T).Name; 
     var element = response.Any.SingleOrDefault(x => x.Name == name); 
     return Deserialize<T>(element.OuterXml); 
    } 

    private static T Deserialize<T>(string xml) 
    { 
     return (T)new XmlSerializer(typeof(T)).Deserialize(new StringReader(xml)); 
    } 

現在的問題似乎是XmlElement未在PCL支持。 那麼如何在PCL中實現相同的結果呢?

+0

我有同樣的問題,如果您找到解決方案,請留下一個答案。謝謝。 –

回答

3

對不起,延遲迴復。正如你已經注意到你不能在便攜中使用XmlElement,這是因爲它只能在.NET Framework中使用。 Silverlight,Phone和Windows Store應用程序不公開此類型。

但是,我們確實有一個替代方案,當在可移植性(獲得XLINQ支持時需要)中定位.NET 4.0.3及更高版本時,可以使用XElement *作爲XmlAnyElementAttribute的替代品。

*我剛剛提出了一個錯誤,以使其在文檔中更清楚一點。