| 02 | usingSystem.Collections.Generic;  | 
 
| 06 | usingSystem.Configuration;  | 
 
| 08 | usingSystem.CodeDom.Compiler;  | 
 
| 10 | usingSystem.Web.Services;  | 
 
| 11 | usingSystem.Web.Services.Description;  | 
 
| 12 | usingMicrosoft.CSharp;  | 
 
| 14 | namespaceInvokeWebService  | 
 
| 16 |     publicstaticclassWebServiceHelper  | 
 
| 21 |         /// <param name="url">WebService地址</param>  | 
 
| 22 |         /// <param name="methodname">方法名(模块名)</param>  | 
 
| 23 |         /// <param name="args">参数列表</param>  | 
 
| 24 |         /// <returns>object</returns>  | 
 
| 25 |         publicstaticobjectInvokeWebService(stringurl, stringmethodname, object[] args)  | 
 
| 27 |             returnInvokeWebService(url, null, methodname, args);  | 
 
| 32 |         /// <param name="url">WebService地址</param>  | 
 
| 33 |         /// <param name="classname">类名</param>  | 
 
| 34 |         /// <param name="methodname">方法名(模块名)</param>  | 
 
| 35 |         /// <param name="args">参数列表</param>  | 
 
| 36 |         /// <returns>object</returns>  | 
 
| 37 |         publicstaticobjectInvokeWebService(stringurl, stringclassname, stringmethodname, object[] args)  | 
 
| 39 |             string@namespace= "ServiceBase.WebService.DynamicWebLoad";  | 
 
| 40 |             if(classname == null|| classname == "")  | 
 
| 42 |                 classname = WebServiceHelper.GetClassName(url);  | 
 
| 45 |             WebClient wc = newWebClient();  | 
 
| 46 |             Stream stream = wc.OpenRead(url + "?WSDL");  | 
 
| 47 |             ServiceDescription sd = ServiceDescription.Read(stream);  | 
 
| 48 |             ServiceDescriptionImporter sdi = newServiceDescriptionImporter();  | 
 
| 49 |             sdi.AddServiceDescription(sd, "", "");  | 
 
| 50 |             CodeNamespace cn = newCodeNamespace(@namespace);  | 
 
| 52 |             CodeCompileUnit ccu = newCodeCompileUnit();  | 
 
| 53 |             ccu.Namespaces.Add(cn);  | 
 
| 55 |             CSharpCodeProvider csc = newCSharpCodeProvider();  | 
 
| 56 |             ICodeCompiler icc = csc.CreateCompiler();  | 
 
| 58 |             CompilerParameters cplist = newCompilerParameters();  | 
 
| 59 |             cplist.GenerateExecutable = false;  | 
 
| 60 |             cplist.GenerateInMemory = true;  | 
 
| 61 |             cplist.ReferencedAssemblies.Add("System.dll");  | 
 
| 62 |             cplist.ReferencedAssemblies.Add("System.XML.dll");  | 
 
| 63 |             cplist.ReferencedAssemblies.Add("System.Web.Services.dll");  | 
 
| 64 |             cplist.ReferencedAssemblies.Add("System.Data.dll");  | 
 
| 66 |             CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);  | 
 
| 67 |             if(true== cr.Errors.HasErrors)  | 
 
| 69 |                 System.Text.StringBuilder sb = newStringBuilder();  | 
 
| 70 |                 foreach(CompilerError ce incr.Errors)  | 
 
| 72 |                     sb.Append(ce.ToString());  | 
 
| 73 |                     sb.Append(System.Environment.NewLine);  | 
 
| 75 |                 thrownewException(sb.ToString());  | 
 
| 79 |             System.Reflection.Assembly assembly = cr.CompiledAssembly;  | 
 
| 80 |             Type t = assembly.GetType(@namespace+ "."+ classname, true, true);  | 
 
| 81 |             objectobj = Activator.CreateInstance(t);  | 
 
| 82 |             System.Reflection.MethodInfo mi = t.GetMethod(methodname);  | 
 
| 83 |             returnmi.Invoke(obj, args);  | 
 
| 87 |         privatestaticstringGetClassName(stringurl)  | 
 
| 89 |             string[] parts = url.Split('/');  | 
 
| 90 |             string[] pps = parts[parts.Length - 1].Split('.');  |