using KGIS.Framework.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace Kingo.PluginServiceInterface.Model { public class LayerFieldCfg { public LayerFieldCfg() { Layers = new List(); } public List Layers { get; set; } public string ToXML() { try { string Str = SerializeAPI.SerializeToXML(this); return Str; } catch (Exception ex) { throw ex; } } public LayerFieldCfg(string pFilePath) { LayerFieldCfg cfg = SerializeAPI.DeserializeToObject2(pFilePath); this.Layers = cfg.Layers; } } public class LayerInfo { [XmlAttribute("CfgName")] public string CfgName { get; set; } [System.Xml.Serialization.XmlIgnore] private List _Fields; [XmlElement(ElementName = "FieldCfg")] public List Fields { get { if (_Fields != null) { for (int i = 0; i < _Fields.Count; i++) { _Fields[i].ID = i + 1; } } return _Fields; } set { _Fields = value; } } public LayerInfo() { Fields = new List(); } public List GetAllField() { List result = new List(); if (_Fields != null) { for (int i = 0; i < _Fields.Count; i++) { result.Add(_Fields[i]); if (_Fields[i].Fields.Count > 0) { result.AddRange(GetSubField(_Fields[i])); } } } return result; } private List GetSubField(FieldCfg pField) { List result = new List(); if (pField != null) { for (int i = 0; i < pField.Fields.Count; i++) { result.Add(pField.Fields[i]); if (pField.Fields[i].Fields.Count > 0) { result.AddRange(GetSubField(pField.Fields[i])); } } } return result; } } }