Расширение классов wsdl из SOAP c#

#c# #serialization #soap

Вопрос:

У меня есть этот XML (для примера):

  <DocumentRoot>
    <Document>
        <Name>Doc1</Name>
        <Id>2e0087ed-717f-4e01-a12a-eadfac0c768</Id>
        <Children>
            <Document>
                <Name>docChild</Name>
                <Id>6bd00d96-b286-4acd-9d4b-fb3258b49sdf</Id>
                <Children>
                    <Document>
                        <Name>doc.pdf</Name>
                        <Id>d37cd13d-0bc2-467f-88bb-ce2f08c0fjjj</Id>
                    </Document>
                </Children>
                <DocumentAttributes>
                    <Data>
                        <MainDocument>
                            <general_structure_authorText>
                                <number_doc>number</number_doc>
                                <date_doc>2021-08-06</date_doc>
                                <doc_author>author</doc_author>
                            </general_structure_authorText>
                        </MainDocument>
                    </Data>
                </DocumentAttributes>
            </Document>
        </Children>
    </Document>
    <Document>
        <Name>Doc2</Name>
        <Id>2e0087ed-717f-4e01-a12a-eadfac0c761</Id>
        <Children>
            <Document>
                <Name>docChild2</Name>
                <Id>6bd00d96-b286-4acd-9d4b-fb3253b49sdf</Id>
                <Children>
                    <Document>
                        <Name>doc2.pdf</Name>
                        <Id>d37cd13d-0bc2-467f-88bb-ce2f0850fjjj</Id>
                    </Document>
                </Children>
                <DocumentAttributes>
                    <Data>
                        <MainDocument>
                            <general_structure_authorMax>
                                <number_doc>number2</number_doc>
                                <date_doc>2021-08-06</date_doc>
                                <doc_author>
                                    <name>name</name>
                                    <email>email</email>
                                </doc_author>
                            </general_structure_authorMax>
                        </MainDocument>
                    </Data>
                </DocumentAttributes>
            </Document>
        </Children>
    </Document>
</DocumentRoot>
 

VS с помощью WSDL (веб-ссылки в VS) создал следующий класс (для части XML, что мне нужно обновить).:

 /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.8.3761.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://ns.essk.gov.spb.ru/smev/essk")]
    public partial class DocumentAttributes
    {

        private object dataField;

        private object schemaField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
        public object Data
        {
            get
            {
                return this.dataField;
            }
            set
            {
                this.dataField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
        public object Schema
        {
            get
            {
                return this.schemaField;
            }
            set
            {
                this.schemaField = value;
            }
        }
    }
 

If i use this class i get XmlNode in DocumentAttributes.Data. I was trying write extend classe for Data like this:

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public class MainDocument
    {
        private ExpertizaIRDDopInfo _data;

        [System.Xml.Serialization.XmlElementAttribute("general_structure_authorText", typeof(ExpertizaIRDDopInfo))]
        public ExpertizaIRDDopInfo Item
        {
            get
            {
                return this._data;
            }
            set
            {
                this._data = value;
            }
        }

    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public class ExpertizaIRDDopInfo
    {
        private string _number;

        private DateTime _date;

        private string _author;

    
         public string number_doc
        { 
            get 
            {
                return this._number;
            } 
            set 
            {
                this._number = value;
            } 
        }

      
        public DateTime date_doc
        { 
            get
            {
                return this._date;
            }
            set
            {
                this._date = value;
            }
        }       
        public string doc_author
{
            get
            {
                return this._author;
            }
            set
            {
                this._author = value;
            }
        }

    }
 

And replace object to MainDocument in

 public object Data
 

but in this case i get null in Data property.

Is the way to extend wsdl classes or i must use object and XmlNode?

Я также пытался создавать классы с помощью paste special в VS и использовать их вместо объекта, но я также получаю null. Возможно, Soap в .net не может использовать пользовательский класс для десериализации ответа с сервера. Только с помощью WSDL?

P.S.

Приведенный выше код является примером. Нет никакого способа показать весь код. Это клиентская сторона.