Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何序列化/反序列化生成的WCF代理代码?_C#_.net_Xml Serialization - Fatal编程技术网

C# 如何序列化/反序列化生成的WCF代理代码?

C# 如何序列化/反序列化生成的WCF代理代码?,c#,.net,xml-serialization,C#,.net,Xml Serialization,我正在尝试序列化/反序列化从svcutil生成的WCF web服务代理代码。虽然我能够序列化对象,但无法将它们反序列化回对象。以下是我通过序列化生成的XML: <RootObject xmlns="http://schemas.myco.com/online/sync/2008/11"> <WrapperObject> <Objects> <SomeObject p4:type="Foo" ContextI

我正在尝试序列化/反序列化从svcutil生成的WCF web服务代理代码。虽然我能够序列化对象,但无法将它们反序列化回对象。以下是我通过序列化生成的XML:

<RootObject xmlns="http://schemas.myco.com/online/sync/2008/11">
    <WrapperObject>
        <Objects>
            <SomeObject p4:type="Foo" ContextId="d5f9f021-b2a1-47ba-9f25-1e068194dc87" ObjectId="fad3ef87-3944-459d-b45b-1e4e52ef24db" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.myco.com/online/sync/2008/11" />
        </Objects>
      </WrapperObject>
</RootObject>
  • 当我尝试使用以下代码反序列化XML时,会出现以下错误:“System.InvalidOperationException:生成XML文档时出错。-->System.XML.XmlException:“p4:type”是重复的属性名称。”

  • 代理代码由svcutil生成,用于与WCF web服务通信。当我只使用web服务调用时,所有生成的对象都被正确地序列化/反序列化


  • 以前有人遇到过类似的问题吗?

    WCF使用专门的XML序列化程序来序列化对象,这些对象生成的XML与标准的XmlSerializer不同。您可以使用XmlSerializer,但必须为对象ObjectToBerialized正确地赋予类属性。使用WCF序列化程序可能更好

    看看这篇文章:

    但是
        using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
        {
            XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
            namespaces.Add(string.Empty, defaultNamespace);
    
            XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace);
            serializer.Serialize(xmlWriter, objectToBeSerialized, namespaces);
    
            return stringBuilder.ToString();
        }
    
        using (TextReader textReader = new StringReader(xmlString))
        {
            using (XmlReader xmlReader = XmlReader.Create(textReader))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace);
                return (T)serializer.Deserialize(xmlReader);
            }
        }