コード例 #1
0
            public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
            {
                switch (sourceEnumerableType)
                {
                case SourceEnumerableType.Array:
                case SourceEnumerableType.List:
                    return(typeof(SameTypeReadOnlyCollectionFromListConverter <>));

                default:
                    return(typeof(SameTypeReadOnlyCollectionFromEnumerableConverter <>));
                }
            }
コード例 #2
0
            public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
            {
                switch (sourceEnumerableType)
                {
                case SourceEnumerableType.Array:
                    return(typeof(OtherTypeLinkedListFromArrayConverter <,>));

                case SourceEnumerableType.List:
                    return(typeof(OtherTypeLinkedListFromListConverter <,>));

                default:
                    return(typeof(OtherTypeLinkedListFromEnumerableConverter <,>));
                }
            }
コード例 #3
0
            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 <>));
                }
            }
コード例 #4
0
            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 <,>));
                }
            }
コード例 #5
0
        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);
        }
コード例 #6
0
        //--------------------------------------------------------------------------------
        // 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);
        }
コード例 #7
0
ファイル: EnumerableTests.cs プロジェクト: JulianR/ThisMember
        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);
        }
コード例 #8
0
 public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
 {
     return(typeof(SameTypeQueueFromEnumerableConverter <>));
 }
コード例 #9
0
 public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
 {
     return(typeof(SameTypeReadOnlyObservableCollectionFromEnumerableConverter <>));
 }
コード例 #10
0
 public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
 {
     return(typeof(SameTypeConcurrentStackFromEnumerableConverter <>));
 }
コード例 #11
0
 public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
 {
     return(typeof(OtherTypeHashSetFromEnumerableConverter <,>));
 }
コード例 #12
0
 public Type GetConverterType(SourceEnumerableType sourceEnumerableType)
 {
     return(typeof(SameTypeLinkedListFromEnumerable <>));
 }