public static class EntityMapping { public static TToEntity To<TFromEntity, TToEntity>(TFromEntity fromEntity) where TToEntity : new() { var fromProperties = fromEntity.GetType().GetProperties(); var mappingModel = new TToEntity(); var toPropertyies = mappingModel.GetType().GetProperties(); foreach (var toProperty in toPropertyies) { var propertyInfo = fromProperties.FirstOrDefault(m => m.Name == toProperty.Name); if (propertyInfo != null) { var value = propertyInfo.GetValue(fromEntity, null); if (value != null) { toProperty.SetValue(mappingModel, value); } } } return mappingModel; } public static List<TToEntity> To<TFromEntity, TToEntity>(List<TFromEntity> fromEntities) where TToEntity : new() { var mappingModels = new List<TToEntity>(); foreach (var fromEntity in fromEntities) { mappingModels.Add(To<TFromEntity, TToEntity>(fromEntity)); } return mappingModels; } }