public void CollectionUpdateInheritance() { var source = new ReadOnlyCollection <TestClass>(new TestClass[] { new TestClass() { String = "A" }, new TestClass() { String = "B" } } ); var target = new ObservableCollection <TestClass>(); var ultraMapper = new Mapper(cfg => { cfg.MapTypes <IEnumerable <TestClass>, IEnumerable <TestClass>, TestClass, TestClass>((s, t) => s.String == t.String); }); ultraMapper.Map(source, target); var userDefinedTypePair = new Internals.TypePair(typeof(IEnumerable <TestClass>), typeof(IEnumerable <TestClass>)); var userDefinedMap = ultraMapper.MappingConfiguration[userDefinedTypePair]; var inheritedTypePair = new Internals.TypePair(typeof(ReadOnlyCollection <TestClass>), typeof(ObservableCollection <TestClass>)); var conventionDefinedMap = ultraMapper.MappingConfiguration[inheritedTypePair]; var conventionDefinedMapOptionCrawler = new TypeMappingOptionsInheritanceTraversal(conventionDefinedMap); Assert.IsTrue(userDefinedMap.CollectionBehavior == conventionDefinedMapOptionCrawler.CollectionBehavior); Assert.IsTrue(userDefinedMap.CollectionItemEqualityComparer == conventionDefinedMapOptionCrawler.CollectionItemEqualityComparer); Assert.IsTrue(userDefinedMap.ReferenceBehavior == conventionDefinedMapOptionCrawler.ReferenceBehavior); var isResultOk = ultraMapper.VerifyMapperResult(source, target); Assert.IsTrue(isResultOk); }
public MemberMappingOptionsInheritanceTraversal(MemberMapping memberMapping) { this.MemberMapping = memberMapping; this.MemberMappingTypeCrawler = new TypeMappingOptionsInheritanceTraversal(this.MemberMapping.MemberTypeMapping); }