/// <summary>
    ///   Maps the specified from.
    /// </summary>
    /// <typeparam name="TFrom">The type of from.</typeparam>
    /// <typeparam name="TTo">The type of to.</typeparam>
    /// <param name="from">The object from.</param>
    /// <returns>The mapped object.</returns>
    public virtual TTo Map <TFrom, TTo>(TFrom from)
    {
        AssertCore.ArgumentNotNull(from, "@from");

        var mapper = GetMapper <TFrom, TTo>();

        return(mapper.Map(from));
    }
    /// <summary>
    ///   Maps the collection.
    /// </summary>
    /// <typeparam name="TFrom">The type of from.</typeparam>
    /// <typeparam name="TTo">The type of to.</typeparam>
    /// <param name="from">The from objects collection.</param>
    /// <returns>The output mapped collection.</returns>
    public virtual IEnumerable <TTo> MapCollection <TFrom, TTo>(IEnumerable <TFrom> from)
    {
        AssertCore.ArgumentNotNullOrEmpty(from, "@from");

        var mapper = GetMapper <TFrom, TTo>();

        return(mapper.MapEnum(from));
    }
    /// <summary>
    ///   Adds the configurator instance.
    /// </summary>
    /// <typeparam name="TFrom">The type of from.</typeparam>
    /// <typeparam name="TTo">The type of to.</typeparam>
    /// <param name="configurator">The configurator.</param>
    public virtual void AddConfiguration <TFrom, TTo>(IMappingConfigurator configurator)
    {
        AssertCore.IsNotNull(configurator, "configurator");

        _MappingConfigurations.Add(new Tuple <Type, Type, IMappingConfigurator>(typeof(TFrom), typeof(TTo), configurator));
    }