internal void RefactorActionPropertyConverted(Property item, Type target) { if (item.PropertyType != PropertyType.Attribute || item.SystemReturnType is null) { throw new NotSupportedException("Only primitive properties can have their return type converted."); } object?oldValue; if (DynamicEntityValues.TryGetValue(item.Name, out oldValue)) { object?newValue = Conversion.Convert(item.SystemReturnType, target, oldValue); DynamicEntityValues[item.Name] = newValue; } }
internal void RefactorActionPropertyRenamed(string oldname, Property item, MergeAlgorithm mergeAlgorithm = MergeAlgorithm.NotApplicable) { if (item.PropertyType == PropertyType.Attribute) { switch (mergeAlgorithm) { case MergeAlgorithm.NotApplicable: case MergeAlgorithm.ThrowOnConflict: { object?oldvalue; if (DynamicEntityValues.TryGetValue(oldname, out oldvalue)) { DynamicEntityValues.Add(item.Name, oldvalue); DynamicEntityValues.Remove(oldname); } break; } case MergeAlgorithm.PreferSource: { object?oldvalue; if (DynamicEntityValues.TryGetValue(oldname, out oldvalue)) { if (DynamicEntityValues.ContainsKey(item.Name)) { DynamicEntityValues[item.Name] = oldvalue; } else { DynamicEntityValues.Add(item.Name, oldvalue); } DynamicEntityValues.Remove(oldname); } break; } case MergeAlgorithm.PreferTarget: { if (!DynamicEntityValues.ContainsKey(item.Name)) { object?oldvalue; if (DynamicEntityValues.TryGetValue(oldname, out oldvalue)) { DynamicEntityValues.Add(item.Name, oldvalue); DynamicEntityValues.Remove(oldname); } } break; } default: throw new NotImplementedException(); } } else { switch (mergeAlgorithm) { case MergeAlgorithm.NotApplicable: case MergeAlgorithm.ThrowOnConflict: { EntityCollectionBase <DynamicEntity>?oldvalue; if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue)) { DynamicEntityLinks.Add(item.Name, oldvalue); DynamicEntityLinks.Remove(oldname); } break; } case MergeAlgorithm.PreferSource: { EntityCollectionBase <DynamicEntity>?oldvalue; if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue)) { if (DynamicEntityLinks.ContainsKey(item.Name)) { DynamicEntityLinks[item.Name] = oldvalue; } else { DynamicEntityLinks.Add(item.Name, oldvalue); } DynamicEntityLinks.Remove(oldname); } break; } case MergeAlgorithm.PreferTarget: { if (!DynamicEntityLinks.ContainsKey(item.Name)) { EntityCollectionBase <DynamicEntity>?oldvalue; if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue)) { DynamicEntityLinks.Add(item.Name, oldvalue); DynamicEntityLinks.Remove(oldname); } } break; } default: throw new NotImplementedException(); } } }