可移植类库,XmlAnyElementAttribute

时间:2012-09-06 13:25:04

标签: c# xml xml-serialization portable-class-library

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

*我刚刚提交了一个错误,以便在文档中更清楚一点。