public void AddEntityInstance(XmlEntityInstance entity) { var description = entityTypes .Where(x => x.Name == entity.Description.Name); if (description.Count() == 0) { entityTypes.Add(entity.Description); } if (entity.Description.GetHashCode() != description.First().GetHashCode()) { throw new ArgumentException(); } entityInstance.Add(entity); }
public static XmlFile Parse(XElement xElement) { if (xElement == null) { throw new NullReferenceException(); } XmlFile xml = new XmlFile(); var entities = new List <XmlEntityInstance>(); foreach (var item in xElement.Descendants("Description")) { xml.AddEntityTypes((XmlEntityType.Parse(item))); } foreach (var item in xElement.Descendants("Entity")) { string name = item.Attribute("Name").Value; var description = xml.entityTypes .Where(x => x.Name == name) .First(); XmlEntityInstance xmlEntity = new XmlEntityInstance(description); foreach (var parameter in description) { var value = item.Element(parameter.Name).Value; switch (parameter.ValueType) { case XmlParameterValueType.Double: xmlEntity.SetParameterValue(parameter.Name, double.Parse(value)); break; case XmlParameterValueType.Integer: xmlEntity.SetParameterValue(parameter.Name, int.Parse(value)); break; case XmlParameterValueType.String: xmlEntity.SetParameterValue(parameter.Name, value); break; } } xml.AddEntityInstance(xmlEntity); } return(xml); }