From 8ea1c34cb95fb6fa6edb192de47b2bd7877e3153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 27 Mar 2020 21:58:20 +0300 Subject: [PATCH] Added HasExtraPropertiesObjectExtendingExtensions --- .../AbpAutoMapperExtensibleDtoExtensions.cs | 5 ++++- ...xtraPropertiesObjectExtendingExtensions.cs | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/HasExtraPropertiesObjectExtendingExtensions.cs diff --git a/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs b/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs index e305cbce8a..e2420ec510 100644 --- a/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs +++ b/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperExtensibleDtoExtensions.cs @@ -24,7 +24,10 @@ namespace AutoMapper foreach (var property in properties) { - result[property.Name] = source.ExtraProperties[property.Name]; + if (source.ExtraProperties.ContainsKey(property.Name)) + { + result[property.Name] = source.ExtraProperties[property.Name]; + } } return result; diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/HasExtraPropertiesObjectExtendingExtensions.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/HasExtraPropertiesObjectExtendingExtensions.cs new file mode 100644 index 0000000000..c6618b009e --- /dev/null +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/HasExtraPropertiesObjectExtendingExtensions.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Data; + +namespace Volo.Abp.ObjectExtending +{ + public static class HasExtraPropertiesObjectExtendingExtensions + { + public static void MapExtraPropertiesTo(this TSource source, TDestination destination) + where TSource : IHasExtraProperties + where TDestination : IHasExtraProperties + { + var extensionPropertyInfos = ObjectExtensionManager.Instance.GetProperties(); + + foreach (var extensionPropertyInfo in extensionPropertyInfos) + { + if (source.ExtraProperties.ContainsKey(extensionPropertyInfo.Name)) + { + destination.ExtraProperties[extensionPropertyInfo.Name] = source.ExtraProperties[extensionPropertyInfo.Name]; + } + } + } + } +}