/// <summary>
        ///     Map a Solution to a SolutionMetadata
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static SolutionMetadata MapFromSolution(Solution item)
        {
            _logger.Trace("Entering");

            var output = new SolutionMetadata();

            MapFromSolutionToSolutionMetadata(item, output);

            _logger.Trace("Exiting");

            return(output);
        }
        /// <summary>
        ///     Update this instance from another.
        /// </summary>
        /// <param name="item"></param>
        public void Update(SolutionMetadata item)
        {
            _logger.Trace("Entering");

            FullMapper.Map(item, this);

            if (item.ProjectMetadatas != null)
            {
                ProjectMetadatas.AddRange(item.Projects.Cast <ProjectMetadata>());
            }

            _logger.Trace("Exiting");
        }
        private static void MapFromSolutionToSolutionMetadata(Solution item, SolutionMetadata output)
        {
            _logger.Trace("Entering");

            PartialMapper.Map(item, output);

            if (item.Projects != null)
            {
                output.ProjectMetadatas = new List <ProjectMetadata>();

                foreach (var project in item.Projects)
                {
                    output.Projects.Add(new ProjectMetadata(null, project));
                }
            }

            _logger.Trace("Exiting");
        }