Skip to content

Commit 925ba8d

Browse files
committed
refactoring and fix
1 parent d81672f commit 925ba8d

5 files changed

Lines changed: 59 additions & 5 deletions

File tree

src/Mapster.Tests/WhenUseTempAdapterConfig.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ public void Adapt_TemporaryConfig_ShouldMapInitOnlyProperties()
2626
.MapOverride(dest => dest.Id, src => src.Age,
2727
cfg =>
2828
{
29-
cfg.MapWith(x => x > 1 ? 42: x);
29+
cfg.DropSettings(x=> x.DestinationTransforms);
30+
cfg.Configurate()
31+
.MapWith(x => x > 10 ? 42 : x);
3032
});
3133

3234

3335
// Act
34-
var result = source.Adapt<DestinationDto>();
36+
var result = source.Adapt<SourceDto,DestinationDto>();
3537

3638
// Assert
3739
result.Name.ShouldBe("Alice");

src/Mapster/TypeAdapterConfig.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,8 @@ internal LambdaExpression CreateInlineMapExpression(Type sourceType, Type destin
477477

478478
if (mapping.OverrideSettings != null)
479479
{
480-
arg.Settings.Apply(mapping.OverrideSettings);
480+
mapping.OverrideSettings.Apply(arg.Settings);
481+
arg.Settings = mapping.OverrideSettings;
481482
}
482483

483484
}

src/Mapster/TypeAdapterSetter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ public TypeAdapterSetter<TDestination> IgnoredRemove(params Expression<Func<TDes
642642
public TypeAdapterSetter<TSource, TDestination> MapOverride<TDestinationMember, TSourceMember>(
643643
Expression<Func<TDestination, TDestinationMember>> member,
644644
Expression<Func<TSource, TSourceMember>> source,
645-
Action<TypeAdapterSetter<TSourceMember, TDestinationMember>>? configAction = null)
645+
Action<OverrideTypesSetter<TSourceMember, TDestinationMember>>? configAction = null)
646646
{
647647
this.CheckCompiled();
648648

@@ -657,7 +657,7 @@ public TypeAdapterSetter<TSource, TDestination> MapOverride<TDestinationMember,
657657

658658
if (configAction != null)
659659
{
660-
var Tempsetter = TypeAdapterSetter.CreateMapTypeOverride<TSourceMember, TDestinationMember>();
660+
var Tempsetter = new OverrideTypesSetter<TSourceMember, TDestinationMember>();
661661
configAction(Tempsetter);
662662

663663
overrideSettings = Tempsetter.Settings;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using Mapster.Utils;
2+
using System;
3+
using System.Linq.Expressions;
4+
5+
namespace Mapster
6+
{
7+
[AdaptWith(AdaptDirectives.DestinationAsRecord)]
8+
public class OverrideTypesSetter : TypeAdapterSetter
9+
{
10+
protected OverrideTypesSettings _Settings { get => (OverrideTypesSettings)Settings; }
11+
12+
public OverrideTypesSetter() : this (new OverrideTypesSettings (), null) { }
13+
public OverrideTypesSetter(TypeAdapterSettings settings, TypeAdapterConfig config) : base(settings, config) { }
14+
}
15+
16+
public class OverrideTypesSetter<TSource, TDestination> : OverrideTypesSetter
17+
{
18+
public OverrideTypesSetter<TSource, TDestination> DropSettings(params Expression<Func<TypeAdapterSettings, object>>[] settings)
19+
{
20+
foreach (var member in settings)
21+
{
22+
_Settings.DropSettings.Add(member.GetMemberPath()!);
23+
}
24+
25+
return this;
26+
}
27+
28+
public TypeAdapterSetter<TSource, TDestination> Configurate()
29+
{
30+
return new TypeAdapterSetter<TSource, TDestination>(this.Settings,this.Config);
31+
}
32+
}
33+
34+
35+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Collections.Generic;
2+
3+
namespace Mapster
4+
{
5+
[AdaptWith(AdaptDirectives.DestinationAsRecord)]
6+
public class OverrideTypesSettings : TypeAdapterSettings
7+
{
8+
public List<string> DropSettings
9+
{
10+
get => Get(nameof(DropSettings), () => new List<string>());
11+
}
12+
13+
14+
15+
}
16+
}

0 commit comments

Comments
 (0)