Skip to content

Commit 3553d25

Browse files
committed
IgnoreNonMapped mark not mapping memeber as Ignore
1 parent d75579d commit 3553d25

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

src/Mapster/Adapters/BaseClassAdapter.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ protected ClassMapping CreateClassConverter(Expression source, ClassModel classM
2121
var unmappedDestinationMembers = new List<string>();
2222
var properties = new List<MemberMapping>();
2323

24+
if (arg.Settings.IgnoreNonMapped == true)
25+
IgnoreNonMapped(classModel,arg);
26+
2427
var sources = new List<Expression> {source};
2528
sources.AddRange(
2629
arg.Settings.ExtraSources.Select(src =>
@@ -34,11 +37,7 @@ src is LambdaExpression lambda
3437

3538
var resolvers = arg.Settings.ValueAccessingStrategies.AsEnumerable();
3639
if (arg.Settings.IgnoreNonMapped == true)
37-
{
38-
arg.Settings.SkipDestinationMemberCheck = true;
3940
resolvers = resolvers.Where(ValueAccessingStrategy.CustomResolvers.Contains);
40-
}
41-
4241
var getter = (from fn in resolvers
4342
from src in sources
4443
select fn(src, destinationMember, arg))
@@ -242,6 +241,18 @@ protected virtual ClassModel GetSetterModel(CompileArgument arg)
242241
};
243242
}
244243

244+
protected void IgnoreNonMapped (ClassModel classModel, CompileArgument arg)
245+
{
246+
var notMappingToIgnore = classModel.Members
247+
.ExceptBy(arg.Settings.Resolvers.Select(x => x.DestinationMemberName),
248+
y => y.Name);
249+
250+
foreach (var item in notMappingToIgnore)
251+
{
252+
arg.Settings.Ignore.TryAdd(item.Name, new IgnoreDictionary.IgnoreItem());
253+
}
254+
}
255+
245256
#endregion
246257
}
247258
}

0 commit comments

Comments
 (0)