示例#1
0
        public ClassMap()
        {
            string name = this.GetType().Name;

            _attributeMaps = new MapList <T>(name);
            _elementMaps   = new MapList <T>(name);
        }
示例#2
0
        internal static void ReadElements(XmlReader reader, MapList <T> elementMaps, Action <ValidationMessage> validationAction)
        {
            var counts = new NameCounter <XName>();

            if (!reader.IsEmptyElement)
            {
                int depth = reader.Depth;

                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.EndElement && reader.Depth == depth)
                    {
                        break;
                    }
                    else if (reader.NodeType == XmlNodeType.Element)
                    {
                        XName name       = reader.GetXName();
                        var   elementMap = elementMaps.Get(name);
                        if (elementMap == null)
                        {
                            Helper.NotifyWarning(validationAction, reader, typeof(T), "Element '{0}' is not Mapped.", name);
                            continue;
                        }

                        elementMap.ReadXml(reader, validationAction);
                        counts.Increment(name);
                    }
                }
            }

            foreach (IElementMap <T> elementMap in elementMaps)
            {
                if (elementMap.Required && counts.Get(elementMap.Name) == 0)
                {
                    Helper.Notify(validationAction, reader, typeof(T), "Element '{0}' is required but was not found.", elementMap.Name);
                }
            }
        }
示例#3
0
 public ElementContainerMap(XName name, bool required, string classMapName)
     : base(name, required)
 {
     _elementMaps = new MapList <T>(classMapName + "." + name.LocalName);
 }
 public AttributeGroupTypeMap()
 {
     _attributeMaps = new MapList <T>(this.GetType().Name);
 }