public IFormatReader Get(IFormatReader parameter) { var typeInfo = _classification.Get(parameter); var fullName = typeInfo.FullName; var version = parameter.IsSatisfiedBy(_property) ? _property.Get(parameter) : 0; var length = _migrations.Length; if (version > length) { throw new XmlException($"Unknown varsion number {version} for type {typeInfo}."); } if (_migrations == null) { throw new XmlException($"Migrations for type {fullName} is null."); } var element = XElement.Load(parameter.Get().AsValid <System.Xml.XmlReader>()); for (var i = version; i < length; i++) { var index = (int)i; var migration = _migrations.ElementAtOrDefault(index); if (migration == null) { throw new XmlException( $"Migrations for type {fullName} contains invalid migration at index {i}."); } _migrations[index].Invoke(element); } var result = _factory.Get(element.CreateReader()); return(result); }
public TypeInfo Get(IFormatReader parameter) { var isSatisfiedBy = parameter.IsSatisfiedBy(SchemaType.Instance); return(isSatisfiedBy ? _reader.Get(parameter) : _classification.Get(parameter)); }
public object Get(IFormatReader parameter) { var contains = parameter.IsSatisfiedBy(_member.Profile); if (contains) { var result = _member.Get(parameter); parameter.Set(); return(result); } return(null); }
Type TypeInfo(IFormatReader parameter, TypeInfo element) { if (parameter.IsSatisfiedBy(_maps)) { var maps = _maps.Get(parameter); if (maps.Length > 1) { return(element.MakeArrayType(maps.Length)); } } return(element.MakeArrayType()); }
public object Get(IFormatReader parameter) { if (parameter.IsSatisfiedBy(ExplicitTypeProperty.Default)) { var classification = _classification.Get(parameter); if (classification != null && !classification.IsArray) { return(_activators.Get(classification.AsType()) .Get()); } } var result = _activator.Get(parameter); return(result); }
public IInnerContent Get(IFormatReader parameter) { var xml = (System.Xml.XmlReader)parameter.Get(); var attributes = xml.HasAttributes ? new XmlAttributes(xml) : (XmlAttributes?)null; var depth = XmlDepth.Default.Get(xml); var content = depth.HasValue ? new XmlElements(xml, depth.Value) : (XmlElements?)null; var result = IdentityComparer.Default.Equals(parameter, NullElementIdentity.Default) || parameter.IsSatisfiedBy(NullValueIdentity.Default) ? null : _contents.Create(parameter, _activator.Get(parameter), new XmlContent(attributes, content)); return(result); }
public IFormatReader Get(IFormatReader parameter) { var typeInfo = _classification.Get(parameter) ?? _type; var fullName = typeInfo.FullName; var version = parameter.IsSatisfiedBy(_property) ? _property.Get(parameter) : 0; if (version > _version) { throw new XmlException($"Unknown varsion number {version} for type {typeInfo}."); } var reader = parameter.Get().AsValid <System.Xml.XmlReader>(); var element = XElement.Load(reader.ReadSubtree()); for (var i = version; i < _version; i++) { var index = (int)i; var migration = _migrations.ElementAtOrDefault(index); if (migration == null) { throw new XmlException( $"Migrations for type {fullName} contains invalid migration at index {i}."); } _migrations[index] .Invoke(element); } var xmlReader = element.CreateReader(); XmlParserContexts.Default.Assign(xmlReader.NameTable, XmlParserContexts.Default.Get(reader.NameTable)); var result = _factory.Get(xmlReader); AssociatedReaders.Default.Assign(result, parameter); return(result); }
public TypeInfo Get(IFormatReader parameter) => FromAttributes(parameter) ?? (!parameter.IsSatisfiedBy(MemberIdentity.Default) ? _types.Get(_identities.Get(parameter.Name, parameter.Identifier)) : null);
public static bool IsAssigned(this IFormatReader @this) => !IdentityComparer.Default.Equals(@this, NullElementIdentity.Default) && [email protected](NullValueIdentity.Default);
public T Get(IFormatReader parameter) => parameter.IsSatisfiedBy(_identity) ? _context(parameter) : default;
// ReSharper disable once CognitiveComplexity // ReSharper disable once ExcessiveIndentation public IFormatReader Get(IFormatReader parameter) { var typeInfo = _classification.Get(parameter) ?? _type; var fullName = typeInfo.FullName; var version = parameter.IsSatisfiedBy(_property) ? _property.Get(parameter) : 0; if (version > _version) { throw new XmlException($"Unknown version number {version} for type {typeInfo}."); } parameter.Set(); var reader = parameter.Get().AsValid <System.Xml.XmlReader>(); var element = XElement.Load(reader.ReadSubtree()); for (var i = version; i < _version; i++) { var index = (int)i; var migration = _migrations.ElementAtOrDefault(index); if (migration == null) { throw new XmlException( $"Migrations for type {fullName} contains invalid migration at index {i}."); } _migrations[index](element); } var attributes = element.Descendants() .Attributes() .Where(a => a.IsNamespaceDeclaration) .Distinct() .ToArray(); foreach (var attribute in attributes) { if (element.Attribute(attribute.Name) == null) { element.Add(attribute); } } var native = element.CreateReader(ReaderOptions.OmitDuplicateNamespaces); var context = XmlParserContexts.Default.Get(reader.NameTable); if (reader.NameTable != null) { var manager = context.NamespaceManager; foreach (var attribute in attributes) { var prefix = attribute.Name.LocalName; if (manager.LookupNamespace(prefix) == null) { var @namespace = element.GetNamespaceOfPrefix(prefix); if (@namespace != null) { manager.AddNamespace(prefix, @namespace.NamespaceName); } } } } XmlParserContexts.Default.Assign(native.NameTable, context); var result = _factory.Get(native); AssociatedReaders.Default.Assign(result, parameter); return(result); }
public object Reference(IFormatReader parameter) => parameter.IsSatisfiedBy(EntityIdentity) ? _converter.Parse(parameter.Content()) : null;
public bool IsSatisfiedBy(IIdentity parameter) => _reader.IsSatisfiedBy(parameter);