/// <summary> /// Builds the context configuration and configures the override attributes for the serializer. /// </summary> private void BuildContext(SerializerConfigurationContext configurationContext) { foreach (var e in configurationContext.Entities) { e.ConfigureEntity(configurationContext); } foreach (var e in configurationContext.Entities) { e.BindEntityToModel(configurationContext); } }
/// <summary> /// Get an instance of the underlying serializer configured for this context. /// </summary> /// <param name="rootType">Type of the root element in the Xml.</param> /// <returns>Instance of a serializer configured for the entities in this context.</returns> private XmlSerializer GetSerializer(Type rootType) { if (null != this.instanceSerializer) { return(this.instanceSerializer); } this.serializerContext = new SerializerConfigurationContext(this.GetType()); this.BuildSerializerContext(this.serializerContext); this.BuildContext(this.serializerContext); this.instanceSerializer = new XmlSerializer(rootType, this.serializerContext.Attributes); return(this.instanceSerializer); }
protected override void BuildSerializerContext(SerializerConfigurationContext configurationContext) { configurationContext.Entity <PoHeader>().HasArray(e => e.LineItems).WithElementName("lines").WithArrayItemName("line"); configurationContext.Entity <PoLine>().HasAttribute(e => e.Tax).WithName("tax"); configurationContext.Entity <PoLine>().HasAttribute(e => e.Quantity).WithName("qty"); }
/// <summary> /// When implemented in a deriving class this method configures the context for serialzing the target entities. /// </summary> /// <param name="configurationContext">Xml serializer context to configure.</param> protected abstract void BuildSerializerContext(SerializerConfigurationContext configurationContext);