Пример #1
0
        /// <summary>Converts all the elements of a sequence</summary>
        /// <returns>New sequence with all the converted elements</returns>
        public static IEnumerable <R> ConvertAll <T, R>([NotNull] this IFdbConverter <T, R> converter, [NotNull] IEnumerable <T> items)
        {
            if (converter == null)
            {
                throw new ArgumentNullException("converter");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            foreach (var item in items)
            {
                yield return(converter.Convert(item));
            }
        }
Пример #2
0
 /// <summary>Registers a new type converter</summary>
 /// <typeparam name="T">Source type</typeparam>
 /// <typeparam name="R">Destination type</typeparam>
 /// <param name="converter">Instance that can convert values of type <typeparamref name="T"/> into a values of type <typeparamref name="R"/></param>
 public static void Register <T, R>([NotNull] IFdbConverter <T, R> converter)
 {
     if (converter == null)
     {
         throw new ArgumentNullException("converter");
     }
     while (true)
     {
         var previous = Converters;
         var dic      = new Dictionary <ComparisonHelper.TypePair, IFdbConverter>(previous, previous.Comparer);
         dic[new ComparisonHelper.TypePair(typeof(T), typeof(R))] = converter;
         if (Interlocked.CompareExchange(ref Converters, dic, previous) == previous)
         {
             break;
         }
     }
 }
Пример #3
0
        public static R[] ConvertAll <T, R>([NotNull] this IFdbConverter <T, R> converter, [NotNull] T[] items)
        {
            if (converter == null)
            {
                throw new ArgumentNullException("converter");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            var results = new R[items.Length];

            for (int i = 0; i < items.Length; i++)
            {
                results[i] = converter.Convert(items[i]);
            }
            return(results);
        }
Пример #4
0
        public static List <R> ConvertAll <T, R>([NotNull] this IFdbConverter <T, R> converter, [NotNull] List <T> items)
        {
            if (converter == null)
            {
                throw new ArgumentNullException("converter");
            }
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

#if CORE_CLR
            var list = new List <R>(items.Count);
            foreach (var item in items)
            {
                list.Add(converter.Convert(item));
            }
            return(list);
#else
            return(items.ConvertAll <R>(converter.Convert));
#endif
        }