private void FindDifferences(PropertiesSet oldSet, PropertiesSet newSet)
        {
            var modData = new List <CustomPropertyModifyData>();

            foreach (var conf in oldSet.Keys)
            {
                var oldPrsList = oldSet[conf];
                var newPrsList = newSet[conf];

                var addedPrpNames = newPrsList.Keys.Except(oldPrsList.Keys);

                modData.AddRange(addedPrpNames
                                 .Select(newPrpName => new CustomPropertyModifyData(
                                             CustomPropertyChangeAction_e.Add, newPrpName, conf, newPrsList[newPrpName])));

                var removedPrpNames = oldPrsList.Keys.Except(newPrsList.Keys);

                modData.AddRange(removedPrpNames
                                 .Select(deletedPrpName => new CustomPropertyModifyData(
                                             CustomPropertyChangeAction_e.Delete, deletedPrpName, conf, oldPrsList[deletedPrpName])));

                var commonPrpNames = oldPrsList.Keys.Intersect(newPrsList.Keys);

                modData.AddRange(commonPrpNames.Where(prpName => newPrsList[prpName] != oldPrsList[prpName])
                                 .Select(prpName => new CustomPropertyModifyData(
                                             CustomPropertyChangeAction_e.Modify, prpName, conf, newPrsList[prpName])));
            }

            if (modData.Any())
            {
                CustomPropertiesModified?.Invoke(m_DocHandler, modData.ToArray());
            }
        }
        private int OnChangeCustomPropertyNotify(string propName, string configuration, string oldValue, string newValue, int valueType)
        {
            CustomPropertiesModified?.Invoke(m_DocHandler, new CustomPropertyModifyData[]
            {
                new CustomPropertyModifyData(CustomPropertyChangeAction_e.Modify, propName, configuration, newValue)
            });

            return(0);
        }