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); }