internal object InvokeReader(XmlMapping mapping, XmlReader xmlReader, XmlDeserializationEvents events, string encodingStyle)
        {
            XmlSerializationReader reader = null;

            try {
                encodingStyle = ValidateEncodingStyle(encodingStyle, mapping.Key);
                reader        = Contract.Reader;
                reader.Init(xmlReader, events, encodingStyle, this);
                if (methods[mapping.Key].readMethod == null)
                {
                    if (readerMethods == null)
                    {
                        readerMethods = Contract.ReadMethods;
                    }
                    string methodName = (string)readerMethods[mapping.Key];
                    if (methodName == null)
                    {
                        throw new InvalidOperationException(Res.GetString(Res.XmlNotSerializable, mapping.Accessor.Name));
                    }
                    methods[mapping.Key].readMethod = GetMethodFromType(reader.GetType(), methodName, pregeneratedAssmbly ? this.assembly : null);
                }
                return(methods[mapping.Key].readMethod.Invoke(reader, emptyObjectArray));
            }
            catch (SecurityException e) {
                throw new InvalidOperationException(Res.GetString(Res.XmlNoPartialTrust), e);
            }
            finally {
                if (reader != null)
                {
                    reader.Dispose();
                }
            }
        }
Exemple #2
0
 internal object InvokeReader(XmlMapping mapping, XmlReader xmlReader, XmlDeserializationEvents events, string encodingStyle)
 {
     XmlSerializationReader reader = null;
     try
     {
         encodingStyle = ValidateEncodingStyle(encodingStyle, mapping.Key);
         reader = Contract.Reader;
         reader.Init(xmlReader, events, encodingStyle, this);
         if (_methods[mapping.Key].readMethod == null)
         {
             if (_readerMethods == null)
             {
                 _readerMethods = Contract.ReadMethods;
             }
             string methodName = (string)_readerMethods[mapping.Key];
             if (methodName == null)
             {
                 throw new InvalidOperationException(SR.Format(SR.XmlNotSerializable, mapping.Accessor.Name));
             }
             _methods[mapping.Key].readMethod = GetMethodFromType(reader.GetType(), methodName);
         }
         return _methods[mapping.Key].readMethod.Invoke(reader, Array.Empty<object>());
     }
     catch (SecurityException e)
     {
         throw new InvalidOperationException(SR.XmlNoPartialTrust, e);
     }
     finally
     {
         if (reader != null)
             reader.Dispose();
     }
 }