Exemplo n.º 1
0
        public string ResolveName(MemberInfo member)
        {
            CustomContract.Requires <ArgumentNullException>(member != null);
            CustomContract.Ensures(CustomContract.Result <string>() != null);

            throw new NotImplementedException();
        }
Exemplo n.º 2
0
        public static IEnumerable <T> Replace <T>(this IEnumerable <T> items, Func <T, bool> predicate, T replacement)
        {
            CustomContract.Requires(items != null);
            CustomContract.Requires(predicate != null);
            CustomContract.Ensures(CustomContract.Result <IEnumerable <T> >() != null);

            return(items.Select(item => predicate(item) ? replacement : item));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Adds the defined mapping to the mapper.
        /// </summary>
        /// <typeparam name="TSource">The source parameter type.</typeparam>
        /// <typeparam name="TTarget">The target parameter type.</typeparam>
        /// <returns>An instance of a <see cref="PredicateMapper"/>.</returns>
        public PredicateMapper And <TSource, TTarget>()
        {
            CustomContract.Ensures(CustomContract.Result <PredicateMapper>() != null);

            if (_converters.All(x => x.SourceType != typeof(TSource)))
            {
                _converters.Add(new PredicateConverter <TSource, TTarget>());
            }

            return(this);
        }
Exemplo n.º 4
0
        public static Tuple <Type, string> GetNameFromAlias(this IMemberNameResolver memberNameResolver, MemberInfo alias, Type sourceType)
        {
            CustomContract.Requires(sourceType != null);
            CustomContract.Requires(alias != null);
            CustomContract.Ensures(CustomContract.Result <Tuple <Type, string> >() != null);

            var source = sourceType.GetMembers()
                         .Select(x => new { Original = x, Name = memberNameResolver.ResolveName(x) })
                         .FirstOrDefault(x => x.Original.Name == alias.Name);

            return(source != null
                                           ? new Tuple <Type, string>(GetMemberType(source.Original), source.Name)
                                           : new Tuple <Type, string>(GetMemberType(alias), alias.Name));
        }
Exemplo n.º 5
0
        public PredicateMapper MapMember <TSource, TTarget, TValue>(
            Expression <Func <TSource, TValue> > source,
            Expression <Func <TTarget, TValue> > result)
        {
            CustomContract.Requires <ArgumentNullException>(result != null);
            CustomContract.Requires <ArgumentNullException>(source != null);
            CustomContract.Ensures(CustomContract.Result <PredicateMapper>() != null);

            var memberBody = result.Body as MemberExpression;

            if (memberBody == null)
            {
                throw new ArgumentException("Expression should access member.", "result");
            }

            var sourceBody = source.Body as MemberExpression;

            if (sourceBody == null)
            {
                throw new ArgumentException("Expression should access member.", "source");
            }

            var resultMember = memberBody.Member;
            var sourceMember = sourceBody.Member;

            var converter = _converters.FirstOrDefault(x => x.SourceType == typeof(TSource) && x.TargetType == typeof(TTarget));

            if (converter == null)
            {
                converter = new PredicateConverter <TSource, TTarget>();
                _converters.Add(converter);
            }

            converter.Substitutions[sourceMember] = resultMember;

            return(this);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Create a map based on the passed type arguments.
        /// </summary>
        /// <typeparam name="TSource">The source parameter type.</typeparam>
        /// <typeparam name="TTarget">The target parameter type.</typeparam>
        /// <returns>An instance of a <see cref="PredicateMapper"/></returns>
        public static PredicateMapper Map <TSource, TTarget>()
        {
            CustomContract.Ensures(CustomContract.Result <PredicateMapper>() != null);

            return(new PredicateMapper(new PredicateConverter <TSource, TTarget>()));
        }