/// <summary>
        /// Initializes a new instance of the <see cref="IISConfigurationService"/> class
        /// </summary>
        /// <param name="configManager"> Details of the IIS Executable and config </param>
        /// <param name="configValidationService"> An IISExpressConfigValidationService implementation to validate the config values </param>
        public IISConfigurationService(IConfigurationManager<IISConfig> configManager, IConfigValidationService configValidationService)
        {
            if (configManager == null)
            {
                throw new ArgumentNullException("configManager");
            }

            if (configValidationService == null)
            {
                throw new ArgumentNullException("configValidationService");
            }

            this._configManager = configManager;
            this._iisConfig = this._configManager.GetSection("IISExpress");

            if (!IsConfigurationValid(this._iisConfig, configValidationService))
            {
                throw new Exception<IISConfigExceptionArgs>(new IISConfigExceptionArgs(this._iisConfig.IIsExecutablePath, this._iisConfig.IISConfigFilePath));
            }
        }
 /// <summary>
 /// Private method to determin whether the IISConfig values are valid paths
 /// </summary>
 /// <param name="config"> IISConfig </param>
 /// <param name="configValidationService"> IConfigValidationService </param>
 /// <returns> True if IISConfig is valid, else false</returns>
 private static bool IsConfigurationValid(IISConfig config, IConfigValidationService configValidationService)
 {
     return configValidationService.IsSatisfiedBy(config);
 }