private static void SaveMetaDataSection(ChoPerformanceCounter pc)
        {
            string            xPath        = GetXPath(pc);
            ChoPCMetaDataInfo metaDataInfo = pc.MetaDataInfo;

            using (ChoXmlDocument xmlDocument = new ChoXmlDocument(MetaDataFilepath, false, false))
            {
                if (metaDataInfo == null)
                {
                    return;
                }

                XmlNode node = xmlDocument.XmlDocument.SelectSingleNode(xPath);
                if (node == null)
                {
                    node = xmlDocument.XmlDocument.MakeXPath(xPath);
                }

                if (node != null)
                {
                    ChoXmlDocument.SetOuterXml(node, metaDataInfo.ToXml());
                    xmlDocument.Save();
                }
            }
        }
        public static ChoPCMetaDataInfo GetMetaDataSection(ChoPerformanceCounter pc)
        {
            if (pc == null)
            {
                return(null);
            }

            string xPath = GetXPath(pc);

            XmlNode node = null;

            if (_rootNode != null)
            {
                node = _rootNode.SelectSingleNode(xPath);
            }

            if (node != null)
            {
                XmlAttributeOverrides overrides = new XmlAttributeOverrides();
                XmlAttributes         attr      = new XmlAttributes();
                attr.XmlRoot = new XmlRootAttribute(node.Name);
                overrides.Add(typeof(ChoPCMetaDataInfo), attr);

                ChoPCMetaDataInfo metaDataInfo = node.ToObject(typeof(ChoPCMetaDataInfo), overrides) as ChoPCMetaDataInfo;
                return(metaDataInfo);
            }
            else
            {
                return(null);
            }
        }
        public static bool IsMetaDataModified(ChoPerformanceCounter pc)
        {
            if (pc == null)
            {
                return(false);
            }

            ChoPCMetaDataInfo newConfigurationMetaDataInfo = GetMetaDataSection(pc);

            return(!ChoObject.Equals <ChoPCMetaDataInfo>(newConfigurationMetaDataInfo, pc.MetaDataInfo));
        }
        public static ChoPCMetaDataInfo GetMetaDataSectionNSaveIfEmpty(ChoPerformanceCounter pc)
        {
            ChoPCMetaDataInfo metaData = GetMetaDataSection(pc);

            if (metaData == null)
            {
                SaveMetaDataSection(pc);
                return(pc.MetaDataInfo);
            }
            else
            {
                return(metaData);
            }
        }