public static ICollection <EnumMappingMismatchSet> FindMismatches(ObjectMapperData mapperData) { var targetMemberDatas = GetAllTargetMemberDatas(mapperData); if (targetMemberDatas.None()) { return(Enumerable <EnumMappingMismatchSet> .EmptyArray); } var mismatchSets = targetMemberDatas .Project(d => EnumMappingMismatchSet.For(d.TargetMember, d.DataSources, mapperData)) .Filter(m => m.Any) .ToArray(); return(mismatchSets); }
protected override Expression VisitBinary(BinaryExpression binary) { if ((binary.NodeType == ExpressionType.Assign) && IsEnum(binary.Left.Type) && TryGetMatch(binary.Left, out var targetMemberData)) { var mismatchWarnings = EnumMappingMismatchSet.For( targetMemberData.TargetMember, targetMemberData.DataSources, _mapperData); if (mismatchWarnings.Any) { if (!_assignmentsByMismatchSet.TryGetValue(mismatchWarnings, out var assignments)) { _assignmentsByMismatchSet.Add(mismatchWarnings, (assignments = new List <Expression>())); } assignments.Add(binary); } } return(base.VisitBinary(binary)); }