public object Get(INXmlElementReader nodeReader) { object objectInstance; using (var itemNodesReader = nodeReader.GetNextChildNode("items")) { var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty); var values = innerText.Split(','); var valuesList = new ArrayList(); foreach (var valueText in values) { valuesList.Add(double.Parse(valueText)); } var typeName = nodeReader.Attributes.Get("type"); var objectType = typeFinder.GetType(typeName); objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); } return objectInstance; }
public void ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { using (var membersNodeReader = nodeReader.GetNextChildNode("members")) { if (membersNodeReader == null) { throw new NXmlReaderFormatException("Missing class members node."); } ReadFields(instance, membersNodeReader, type); } var baseNodeReader = nodeReader.GetNextChildNode(); if (baseNodeReader != null) { if (baseNodeReader.Name != "base") { throw new NXmlReaderFormatException( string.Format("Found a {0} node when expecting a base node.", baseNodeReader.Name)); } using (var baseClassTypeNode = baseNodeReader.GetNextChildNode()) { baseClassMembersReader.ReadMembers(instance, baseClassTypeNode, type.BaseType); } baseNodeReader.Dispose(); } }
public object Get(INXmlElementReader nodeReader) { object objectInstance; using (var itemNodesReader = nodeReader.GetNextChildNode("items")) { var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty); var values = innerText.Split(','); var valuesList = new ArrayList(); foreach (var valueText in values) { valuesList.Add(double.Parse(valueText)); } var typeName = nodeReader.Attributes.Get("type"); var objectType = typeFinder.GetType(typeName); objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); } return(objectInstance); }
public object Get(INXmlElementReader nodeReader) { var valuesList = new ArrayList(); using (var itemNodes = nodeReader.GetNextChildNode("items")) { INXmlElementReader itemNode; while ((itemNode = itemNodes.GetNextChildNode()) != null) { if (objectReader.CanRead(itemNode)) { valuesList.Add(objectReader.Get(itemNode)); } itemNode.Dispose(); } } var elementType = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType(); var objectInstance = valuesList.ToArray(elementType.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); return(objectInstance); }
void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { var dictionary = (IDictionary) instance; using (var itemNodesReader = nodeReader.GetNextChildNode("items")) { var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count"); for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++) { object key; object value; using (var keyReader = itemNodesReader.GetNextChildNode()) { key = objectReader.Get(keyReader); } using (var valueReader = itemNodesReader.GetNextChildNode()) { value = objectReader.Get(valueReader); } dictionary.Add(key, value); } } }
private void ReadFields(object instance, INXmlElementReader membersNodeReader, IDataType type) { INXmlElementReader fieldReader; while ((fieldReader = membersNodeReader.GetNextChildNode("f")) != null) { if (fieldReader.Name != "f") { throw new NXmlReaderFormatException( string.Format("Invalid node '{0}' found when expecting a field node", fieldReader.Name)); } try { var members = memberReader.Read(fieldReader, type); members.SetValue(instance); } catch (Exception exception) { var memberName = fieldReader.Attributes.Get("name"); throw new NSerializerException( string.Format("Error reading member '{0}.{1}", type.FullName, memberName), exception); } fieldReader.Dispose(); } }
public object Get(INXmlElementReader nodeReader) { var valuesList = new ArrayList(); using (var itemNodes = nodeReader.GetNextChildNode("items")) { INXmlElementReader itemNode; while ((itemNode = itemNodes.GetNextChildNode()) != null) { if (objectReader.CanRead(itemNode)) { valuesList.Add(objectReader.Get(itemNode)); } itemNode.Dispose(); } } var elementType = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType(); var objectInstance = valuesList.ToArray(elementType.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); return objectInstance; }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); return(Enum.Parse(type.GetTargetType(), nodeReader.GetPayload().Trim())); }
void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { var dictionary = (IDictionary)instance; using (var itemNodesReader = nodeReader.GetNextChildNode("items")) { var numberOfItemPairs = itemNodesReader.Attributes.GetInteger("count"); for (var itemIndex = 0; itemIndex < numberOfItemPairs; itemIndex++) { object key; object value; using (var keyReader = itemNodesReader.GetNextChildNode()) { key = objectReader.Get(keyReader); } using (var valueReader = itemNodesReader.GetNextChildNode()) { value = objectReader.Get(valueReader); } dictionary.Add(key, value); } } }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = appObjectRepository.Get(type.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); return instance; }
public object Get(INXmlElementReader nodeReader) { object value; var data = nodeReader.GetPayload().Trim(); switch (data) { case "max": { value = double.MaxValue; break; } case "min": { value = double.MinValue; break; } case "posinfinity": { value = double.PositiveInfinity; break; } case "neginfinity": { value = double.NegativeInfinity; break; } case "nan": { value = double.NaN; break; } default: { try { value = double.Parse(data); } catch (Exception) { throw new NXmlReaderFormatException( string.Format("Unable to read double value '{0}'.", data)); } break; } } return(value); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = appObjectRepository.Get(type.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); return(instance); }
void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { foreach (var reader in baseTypeReaders) { if (reader.CanRead(nodeReader)) { reader.ReadMembers(instance, nodeReader, type); break; } } }
public bool CanRead(INXmlElementReader nodeReader) { var canRead = false; foreach (var reader in objectReaders) { canRead = reader.CanRead(nodeReader); if (canRead) { break; } } return canRead; }
public bool CanRead(INXmlElementReader nodeReader) { var canRead = false; foreach (var typeMemberReader in memberReaders) { canRead = typeMemberReader.CanRead(nodeReader); if (canRead) { break; } } return canRead; }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var typeAccessor = new TypeAccessor(type.GetTargetType(), docObjectRepository); var instance = typeAccessor.GetInstance(); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); ((IBaseTypeMembersReader) this).ReadMembers(instance, nodeReader, type); return instance; }
public IMemberValue Read(INXmlElementReader nodeReader, IDataType type) { var memberValues = new List<IMemberValue>(); foreach (var typeMemberReader in memberReaders) { if (typeMemberReader.CanRead(nodeReader)) { memberValues.Add(typeMemberReader.Read(nodeReader, type)); break; } } return new MembersValue(memberValues.ToArray()); }
public bool CanRead(INXmlElementReader nodeReader) { var canRead = false; foreach (var reader in objectReaders) { canRead = reader.CanRead(nodeReader); if (canRead) { break; } } return(canRead); }
public bool CanRead(INXmlElementReader nodeReader) { var canRead = false; foreach (var typeMemberReader in memberReaders) { canRead = typeMemberReader.CanRead(nodeReader); if (canRead) { break; } } return(canRead); }
public object Get(INXmlElementReader nodeReader) { object readObject = null; foreach (var reader in objectReaders) { if (reader.CanRead(nodeReader)) { logger.Debug("Reading node using {0}", nodeReader); readObject = reader.Get(nodeReader); break; } } return readObject; }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var typeAccessor = new TypeAccessor(type.GetTargetType(), docObjectRepository); var instance = typeAccessor.GetInstance(); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); ReadMembers(instance, nodeReader, type); return(instance); }
public object Get(INXmlElementReader nodeReader) { object value; var data = nodeReader.GetPayload().Trim(); switch (data) { case "max": { value = double.MaxValue; break; } case "min": { value = double.MinValue; break; } case "posinfinity": { value = double.PositiveInfinity; break; } case "neginfinity": { value = double.NegativeInfinity; break; } case "nan": { value = double.NaN; break; } default: { try { value = double.Parse(data); } catch (Exception) { throw new NXmlReaderFormatException( string.Format("Unable to read double value '{0}'.", data)); } break; } } return value; }
public object Get(INXmlElementReader nodeReader) { object readObject = null; foreach (var reader in objectReaders) { if (reader.CanRead(nodeReader)) { logger.Debug("Reading node using {0}", nodeReader); readObject = reader.Get(nodeReader); break; } } return(readObject); }
public IMemberValue Read(INXmlElementReader nodeReader, IDataType type) { var memberValues = new List <IMemberValue>(); foreach (var typeMemberReader in memberReaders) { if (typeMemberReader.CanRead(nodeReader)) { memberValues.Add(typeMemberReader.Read(nodeReader, type)); break; } } return(new MembersValue(memberValues.ToArray())); }
public object Get(INXmlElementReader nodeReader) { var objectID = nodeReader.Attributes.GetInteger("ID"); object readObject; try { readObject = readObjects.Get(objectID); } catch (Exception exception) { throw new UnableToReadXMLTextException( string.Format( "Exception thrown while reading referenced object with ID {0}. No object with that ID in the read objects cache.", objectID), exception); } return readObject; }
void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { var list = (IList)instance; using (var itemNodes = nodeReader.GetNextChildNode("items")) { var numberOfItems = itemNodes.Attributes.GetInteger("count"); while (numberOfItems-- > 0) { INXmlElementReader itemNode; using (itemNode = itemNodes.GetNextChildNode()) { list.Add(objectReader.Get(itemNode)); } } } }
public INXmlElementReader GetNextChildNode() { INXmlElementReader reader = null; if (inputStream.Seek('<', '>')) { inputStream.Seek(1, SeekOrigin.Current); var closingElement = inputStream.Peek() == '/'; inputStream.Seek(-1, SeekOrigin.Current); if (!closingElement) { reader = new XmlElementReaderFactory(inputStream).Create(); } } return(reader); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = Activator.CreateInstance(type.GetTargetType()); using (var membersNodeReader = nodeReader.GetNextChildNode("members")) { if (membersNodeReader == null) { throw new NXmlReaderFormatException("Missing class members node."); } ReadFields(instance, membersNodeReader, type); } return(instance); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = Activator.CreateInstance(type.GetTargetType()); using (var membersNodeReader = nodeReader.GetNextChildNode("members")) { if (membersNodeReader == null) { throw new NXmlReaderFormatException("Missing class members node."); } ReadFields(instance, membersNodeReader, type); } return instance; }
void IBaseTypeMembersReader.ReadMembers(object instance, INXmlElementReader nodeReader, IDataType type) { var list = (IList) instance; using (var itemNodes = nodeReader.GetNextChildNode("items")) { var numberOfItems = itemNodes.Attributes.GetInteger("count"); while (numberOfItems-- > 0) { INXmlElementReader itemNode; using (itemNode = itemNodes.GetNextChildNode()) { list.Add(objectReader.Get(itemNode)); } } } }
public object Get(INXmlElementReader nodeReader) { var objectID = nodeReader.Attributes.GetInteger("ID"); object readObject; try { readObject = readObjects.Get(objectID); } catch (Exception exception) { throw new UnableToReadXMLTextException( string.Format( "Exception thrown while reading referenced object with ID {0}. No object with that ID in the read objects cache.", objectID), exception); } return(readObject); }
public IMemberValue Read(INXmlElementReader nodeReader, IDataType type) { var fieldName = nodeReader.Attributes.Get("name"); var field = type.GetField(fieldName); if (field == null) { throw new UnableToReadXMLTextException( string.Format("Unable to find field '{0}'.", fieldName)); } IMemberValue value; using (var valueNode = nodeReader.GetNextChildNode()) { value = new FieldValue(field, objectReader.Get(valueNode)); } return value; }
public IMemberValue Read(INXmlElementReader nodeReader, IDataType type) { var fieldName = nodeReader.Attributes.Get("name"); var field = type.GetField(fieldName); if (field == null) { throw new UnableToReadXMLTextException( string.Format("Unable to find field '{0}'.", fieldName)); } IMemberValue value; using (var valueNode = nodeReader.GetNextChildNode()) { value = new FieldValue(field, objectReader.Get(valueNode)); } return(value); }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "typename"; }
public object Get(INXmlElementReader nodeReader) { return new MetaDataTypeName( nodeReader.Attributes.GetInteger("typeid"), nodeReader.Attributes.Get("name")); }
public object Get(INXmlElementReader nodeReader) { return(Convert.ChangeType(nodeReader.Attributes.Get("value"), typeof(T))); }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "appObject"; }
public object Get(INXmlElementReader nodeReader) { return reader.Get(nodeReader); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == "value"); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == nodeName); }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "version"; }
public object Get(INXmlElementReader nodeReader) { return new Version(nodeReader.Attributes.Get("value")); }
public object Get(INXmlElementReader nodeReader) { return(null); }
public object Get(INXmlElementReader nodeReader) { return DateTime.Parse(nodeReader.Attributes.Get("value")); }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "arrayOfDoubles"; }
public object Get(INXmlElementReader nodeReader) { return(new Guid(nodeReader.Attributes.Get("value"))); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); return Enum.Parse(type.GetTargetType(), nodeReader.GetPayload().Trim()); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == "appObject"); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == "timespan"); }
public object Get(INXmlElementReader nodeReader) { return null; }
public object Get(INXmlElementReader nodeReader) { return(new MetaDataTypeName( nodeReader.Attributes.GetInteger("typeid"), nodeReader.Attributes.Get("name"))); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == "arrayOfDoubles"); }
public bool CanRead(INXmlElementReader nodeReader) { return(nodeReader.Name == "objref"); }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "null"; }
public bool CanRead(INXmlElementReader nodeReader) { return nodeReader.Name == "datetime"; }
public bool CanRead(INXmlElementReader nodeReader) { return reader.CanRead(nodeReader); }
public object Get(INXmlElementReader nodeReader) { return(DateTime.Parse(nodeReader.Attributes.Get("value"))); }