public QXEnclosedListSerializer(string elementName, IQXSerializer childSerializer) { this.XmlElementName = elementName; this.RegisterXmlElementList(childSerializer, list => list, (list, child) => ((IList <object>)list).Add(child)); this.IgnoreUnregisteredElements = false; }
public QXListSerializer(string elementName, IQXSerializer childSerializer) : base(elementName) { this.RegisterXmlElementList(childSerializer, list => list, (list, child) => ((IList <object>)list).Add(child)); this.IgnoreUnregisteredElements = false; this.InstanceRetrievalMethod = () => new List <object>(); }
protected void RegisterXmlElementList(IQXSerializer elementSerializer, QXElementListSelector <T> selector, QXContentIntegrator <T> integrator) { if (_ElementInfoCollection.Contains(elementSerializer.XmlElementName)) { throw new Exception("The serializer for element \"" + elementSerializer.XmlElementName + "\" has already been registered to the parent serializer."); } _ElementInfoCollection.Add(new QXElementInfo <T>(elementSerializer) { ContentSelector = selector, ContentIntegrator = integrator, ElementType = QXElementType.List }); }
protected void RegisterXmlEnclosedElementList(string enclosingElementName, IQXSerializer elementSerializer, QXElementListSelector <T> selector, QXContentIntegrator <T> integrator) { object listSelector(T parent) { return(selector(parent)); } void listIntegrator(T parent, object deserializedChild) { foreach (object item in (IEnumerable <object>)deserializedChild) { integrator(parent, item); } } QXEnclosedListSerializer listSerializer = new QXEnclosedListSerializer(enclosingElementName, elementSerializer); this.RegisterXmlElement(listSerializer, listSelector, listIntegrator); this.SetElementProcessingMode(enclosingElementName, QXProcessingMode.IgnoreIfEmpty); }
public QXElementInfo(IQXSerializer elementSerializer) { this.ElementSerializer = elementSerializer; }
public new void UnregisterXmlElement(IQXSerializer elementSerializer) => base.UnregisterXmlElement(elementSerializer);
public new void RegisterXmlEnclosedElementList(string enclosingElementName, IQXSerializer elementSerializer, QXElementListSelector <T> selector, QXContentIntegrator <T> integrator) => base.RegisterXmlEnclosedElementList(enclosingElementName, elementSerializer, selector, integrator);
public new void RegisterXmlElementList(IQXSerializer elementSerializer, QXElementListSelector <T> selector, QXContentIntegrator <T> integrator) => base.RegisterXmlElementList(elementSerializer, selector, integrator);
protected void UnregisterXmlElement(IQXSerializer elementSerializer) => this.UnregisterXmlElement(elementSerializer.XmlElementName);