可移植类库,XmlAnyElementAttribute

在可移植类库中 ,我有一个包含具有XmlAnyElement属性的成员的类。

 public partial class VariableWebServiceResponse { private List anyField; public VariableWebServiceResponse () { this.anyField = new List(); } [System.Xml.Serialization.XmlAnyElementAttribute(Order=0)] public List Any { get { return this.anyField; } set { this.anyField = value; } } } 

这种类在.NET 4.0中完美运行,因此我的代码如下:

  private T Deserialize(VariableWebServiceResponse response) { var name = typeof(T).Name; var element = response.Any.SingleOrDefault(x => x.Name == name); return Deserialize(element.OuterXml); } private static T Deserialize(string xml) { return (T)new XmlSerializer(typeof(T)).Deserialize(new StringReader(xml)); } 

现在的问题似乎是PCL不支持XmlElement 。 那么如何在PCL中实现相同的结果呢?

这么晚才回复很抱歉。 正如您已经注意到,您无法在可移植设备中使用XmlElement,这是因为它仅在.NET Framework中可用。 Silverlight,Phone和Windowsapp store应用不会公开此类型。

但是,我们确实有一个替代品,当在可移植的目标.NET 4.0.3及更高版本(需要获得XLINQ支持)时,您可以使用XElement *替换XmlAnyElementAttribute。

*我刚刚提交了一个错误,使文档中的内容更加清晰。