public bool ReadNextArgument(out object value) { if (!ReadNextArgument()) { value = null; return(false); } if (_reader.Name != XmlSerializer.ArgumentElementName) { throw new NotImplementedException(); } if (_reader.IsEmptyElement && !_reader.HasAttributes) { value = null; return(true); } var count = _reader.AttributeCount; Type type = null; for (int i = 0; i < count; ++i) { _reader.MoveToAttribute(i); switch (_reader.Name) { case XmlSerializer.TypeAttributeName: type = TypeResolver.GetType(_reader.Value, true); break; } } if (type == null) { throw new NotImplementedException(); } _reader.Read(); if (_reader.Name != XmlSerializer.ValueName) { throw new NotImplementedException(); } var methods = _methodStorage.GetOrAdd(type); value = methods.ReadObjectDelegate(_reader, _serializer, _endPoint); _reader.MoveToElement(); _reader.Read(); return(true); }
/// <inheritdoc /> public void RegisterType(Type type) { Log.DebugFormat("Registering type '{0}'", type); _methodStorage.GetOrAdd(type); Log.DebugFormat("Type '{0}' successfully registered", type); }