Skip to content

Commit d2af551

Browse files
authored
Merge pull request #16 from agileobjects/Issue14
Merge branch Issue14 to master
2 parents 75da4a3 + 7b43233 commit d2af551

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

AgileMapper.UnitTests/Configuration/WhenConfiguringDataSources.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,5 +860,40 @@ public void ShouldRestrictConfigurationApplicationByMappingRuleSet()
860860
overwriteResult.Value.ShouldBe(source.Value);
861861
}
862862
}
863+
864+
// See https://github.com/agileobjects/AgileMapper/issues/14
865+
[Fact]
866+
public void ShouldAllowIdAndIdentifierConfiguration()
867+
{
868+
using (var mapper = Mapper.CreateNew())
869+
{
870+
mapper.WhenMapping
871+
.From<PublicTwoFields<int, int>>()
872+
.To<IdTester>()
873+
.Map((ptf, id) => ptf.Value1)
874+
.To(id => id.ClassId)
875+
.And
876+
.Map((ptf, id) => ptf.Value2)
877+
.To(id => id.ClassIdentifier);
878+
879+
var source = new PublicTwoFields<int, int>
880+
{
881+
Value1 = 123,
882+
Value2 = 987
883+
};
884+
885+
var result = mapper.Map(source).ToANew<IdTester>();
886+
887+
result.ClassId.ShouldBe(123);
888+
result.ClassIdentifier.ShouldBe(987);
889+
}
890+
}
891+
892+
private class IdTester
893+
{
894+
public int ClassId { get; set; }
895+
896+
public int ClassIdentifier { get; set; }
897+
}
863898
}
864899
}

AgileMapper/Configuration/UserConfiguredItemBase.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,15 @@ public virtual bool ConflictsWith(UserConfiguredItemBase otherConfiguredItem)
5555

5656
if (ConfigInfo.HasCompatibleTypes(otherConfiguredItem.ConfigInfo))
5757
{
58-
return TargetMember.Matches(otherConfiguredItem.TargetMember);
58+
return MembersConflict(otherConfiguredItem.TargetMember);
5959
}
6060

6161
return false;
6262
}
6363

64+
protected virtual bool MembersConflict(QualifiedMember otherMember)
65+
=> TargetMember.Matches(otherMember);
66+
6467
protected bool SourceAndTargetTypesAreTheSame(UserConfiguredItemBase otherConfiguredItem)
6568
{
6669
return ConfigInfo.HasSameSourceTypeAs(otherConfiguredItem.ConfigInfo) &&

AgileMapper/DataSources/ConfiguredDataSourceFactory.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace AgileObjects.AgileMapper.DataSources
22
{
3+
using System.Linq;
34
using System.Linq.Expressions;
45
using Configuration;
56
using Members;
@@ -48,6 +49,9 @@ public override bool ConflictsWith(UserConfiguredItemBase otherConfiguredItem)
4849
return _dataSourceLambda.IsSameAs(otherDataSource._dataSourceLambda);
4950
}
5051

52+
protected override bool MembersConflict(QualifiedMember otherMember)
53+
=> TargetMember.LeafMember.Equals(otherMember.LeafMember);
54+
5155
public IConfiguredDataSource Create(IMemberMapperData mapperData)
5256
{
5357
var configuredCondition = GetConditionOrNull(mapperData);

0 commit comments

Comments
 (0)