/// <summary>
        /// Initializes a new instance of the <see cref="WebServiceClientProxyFactory" /> class.
        /// </summary>
        /// <param name="url">The URL for the service address or the file containing the WSDL data.</param>
        /// <param name="outputAssembly">The name of the output assembly of client proxy.</param>
        /// <param name="overwrite">Whether overwrite exists file.</param>
        /// <param name="setupInfo">The WebServiceClientProxyFactorySetup to use.</param>
        public WebServiceClientProxyFactory(string url, string outputAssembly, bool overwrite, WebServiceClientProxyFactorySetup setupInfo)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }

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

            this.Url        = url;
            this._setupInfo = setupInfo;

            this.DownloadMetadata();
            this.ImportMetadata();
            this.WriteCode();
            this.CompileProxy(outputAssembly, overwrite);
            this.DisposeCodeDomProvider();
            this.Types = this.ProxyAssembly.GetTypes();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="WebServiceClientProxyFactory" /> class.
 /// </summary>
 /// <param name="url">The URL for the service address or the file containing the WSDL data.</param>
 /// <param name="setupInfo">The WebServiceClientProxyFactorySetup to use.</param>
 public WebServiceClientProxyFactory(string url, WebServiceClientProxyFactorySetup setupInfo)
     : this(url, null, true, setupInfo)
 {
 }