/// <summary>
        /// given instance with the destination instance using an specific key service
        /// </summary>
        /// <typeparam name="TSource">The type of the source.</typeparam>
        /// <typeparam name="TDestination">The type of the destination.</typeparam>
        /// <param name="source">The source.</param>
        /// <param name="destination">The destination.</param>
        /// <param name="keyService">The key service.</param>
        /// <returns></returns>
        public TDestination TryToMerge <TSource, TDestination>(TSource source, TDestination destination, object keyService)
        {
            object src = source;
            object dst = destination;

            if (src == null || dst == null)
            {
                return(destination);
            }

            var serviceMerger = this.mergerResolver.FirstOrDefault(
                transformer => transformer.Match(keyService, typeof(TSource), typeof(TDestination))
                );

            if (serviceMerger == null)
            {
                return(destination);
            }

            ISourceMerger merger = serviceMerger.ServiceAs <ISourceMerger>();

            if (merger != null)
            {
                merger.Merge(source, destination);
            }

            return(destination);
        }
        /// <summary>
        /// Tries to merge the given instance with the destination instance using an specific key service.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="destination">The destination.</param>
        /// <param name="keyService">The key service.</param>
        /// <returns></returns>
        public object TryToMerge(object source, object destination, object keyService)
        {
            if (source == null || destination == null)
            {
                return(destination);
            }

            var serviceMerger = this.mergerResolver.FirstOrDefault(
                transformer => transformer.Match(keyService, source.GetType(), destination.GetType()));

            if (serviceMerger == null)
            {
                return(destination);
            }

            ISourceMerger merger = serviceMerger.ServiceAs <ISourceMerger>();

            return(merger.Merge(source, destination));
        }