private static T ReadChildElement <T>(XmlReader reader, XmlInitializer <T> initializer) where T : IXmlElement, new() { T element = default(T); bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(); if (!isEmpty) { element = initializer(reader); reader.ReadEndElement(); } return(element); }
private static IEnumerable <T> ReadChildCollection <T>(XmlReader reader, XmlInitializer <T> initializer) where T : IXmlElement, new() { bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(); if (!isEmpty) { while (XmlNodeType.Element == reader.NodeType) { yield return(initializer(reader)); } reader.ReadEndElement(); } }