public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { switch (sourceEnumerableType) { case SourceEnumerableType.Array: case SourceEnumerableType.List: return(typeof(SameTypeReadOnlyCollectionFromListConverter <>)); default: return(typeof(SameTypeReadOnlyCollectionFromEnumerableConverter <>)); } }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { switch (sourceEnumerableType) { case SourceEnumerableType.Array: return(typeof(OtherTypeLinkedListFromArrayConverter <,>)); case SourceEnumerableType.List: return(typeof(OtherTypeLinkedListFromListConverter <,>)); default: return(typeof(OtherTypeLinkedListFromEnumerableConverter <,>)); } }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { switch (sourceEnumerableType) { case SourceEnumerableType.Array: // Used assignable throw new NotSupportedException(); case SourceEnumerableType.List: case SourceEnumerableType.Collection: return(typeof(SameTypeArrayFromCollectionConverter <>)); default: return(typeof(SameTypeArrayFromEnumerableConverter <>)); } }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { switch (sourceEnumerableType) { case SourceEnumerableType.Array: return(typeof(OtherTypeQueueFromArrayConverter <,>)); case SourceEnumerableType.List: return(typeof(OtherTypeQueueFromListConverter <,>)); case SourceEnumerableType.Collection: return(typeof(OtherTypeQueueFromCollectionConverter <,>)); default: return(typeof(OtherTypeQueueFromEnumerableConverter <,>)); } }
public void EnumerableToArrayIsMappedCorrectly() { var mapper = new MemberMapper(); var source = new SourceEnumerableType { List = new List <SourceElement> { new SourceElement { Value = "X" } } }; var result = mapper.Map <SourceEnumerableType, DestinationArrayType>(source); Assert.AreEqual(source.List.Count(), result.List.Count()); Assert.AreEqual("X", result.List.Single().Value); }
//-------------------------------------------------------------------------------- // Helper //-------------------------------------------------------------------------------- private static Type ResolveEnumerableType(Type type, out SourceEnumerableType sourceEnumerableType) { if (type.IsArray) { sourceEnumerableType = SourceEnumerableType.Array; return(type.GetElementType()); } var interfaceType = type.GetInterfaces() .FirstOrDefault(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IList <>)); if (interfaceType != null) { sourceEnumerableType = SourceEnumerableType.List; return(interfaceType.GenericTypeArguments[0]); } interfaceType = type.GetInterfaces() .FirstOrDefault(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(ICollection <>)); if (interfaceType != null) { sourceEnumerableType = SourceEnumerableType.Collection; return(interfaceType.GenericTypeArguments[0]); } interfaceType = type.GetInterfaces() .FirstOrDefault(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable <>)); if (interfaceType != null) { sourceEnumerableType = SourceEnumerableType.Enumerable; return(interfaceType.GenericTypeArguments[0]); } sourceEnumerableType = SourceEnumerableType.Nothing; return(null); }
public void EnumerableToListIsMappedCorrectly() { var mapper = new MemberMapper(); var source = new SourceEnumerableType { List = new List<SourceElement> { new SourceElement { Value = "X" } } }; var result = mapper.Map<SourceEnumerableType, DestinationListType>(source); Assert.AreEqual(source.List.Count(), result.List.Count()); Assert.AreEqual("X", result.List.Single().Value); }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { return(typeof(SameTypeQueueFromEnumerableConverter <>)); }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { return(typeof(SameTypeReadOnlyObservableCollectionFromEnumerableConverter <>)); }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { return(typeof(SameTypeConcurrentStackFromEnumerableConverter <>)); }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { return(typeof(OtherTypeHashSetFromEnumerableConverter <,>)); }
public Type GetConverterType(SourceEnumerableType sourceEnumerableType) { return(typeof(SameTypeLinkedListFromEnumerable <>)); }