首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Wince 怎么动态引用webservice呀

2013-01-25 
Wince 如何动态引用webservice呀?wince项目需要引用webservice,但是webserevice地址是动态的,我在winform

Wince 如何动态引用webservice呀?
wince项目需要引用webservice,但是webserevice地址是动态的,我在winform项目可以用实现,但是在wince项目不行?有会的吗?请给予帮助,谢谢!
public static object InvokeWebService(string url,  string classname, string methodname, object[] args)
         {
             //string @namespace = "TrainingSite.PDAWebservice";
             string @namespace = "s的";
            if((classname == null) ||(classname == ""))
             {
                 classname = GetWsClassName(url) ;
             }

            try
             {
                //获取WSDL
                 WebClient wc                   = new WebClient();
                 Stream stream                  = wc.OpenRead(url+"?WSDL");
                 ServiceDescription sd          = ServiceDescription.Read(stream);
                 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
                 sdi.AddServiceDescription(sd,"","");
                 CodeNamespace cn                = new CodeNamespace(@namespace);
                
                //生成客户端代理类代码
                 CodeCompileUnit ccu             = new CodeCompileUnit();
                 ccu.Namespaces.Add(cn);
                 sdi.Import(cn ,ccu); 
                 CSharpCodeProvider csc          = new CSharpCodeProvider();
                 ICodeCompiler icc               = csc.CreateCompiler();
                
                //设定编译参数


                 CompilerParameters cplist       = new CompilerParameters();
                 cplist.GenerateExecutable       = false;
                 cplist.GenerateInMemory         = true;
                 cplist.ReferencedAssemblies.Add("System.dll");
                 cplist.ReferencedAssemblies.Add("System.XML.dll");
                 cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
                 cplist.ReferencedAssemblies.Add("System.Data.dll");

                //编译代理类
                 CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
                if(true == cr.Errors.HasErrors)
                 {
                     System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    foreach(System.CodeDom.Compiler.CompilerError ce in cr.Errors)
                     {
                         sb.Append(ce.ToString());
                         sb.Append(System.Environment.NewLine);
                     }
                    throw new Exception(sb.ToString());
                 }

                //生成代理实例,并调用方法
                 System.Reflection.Assembly assembly = cr.CompiledAssembly;
                 Type t = assembly.GetType(@namespace+"."+classname,true,true);
                object obj = Activator.CreateInstance(t);
                 System.Reflection.MethodInfo mi = t.GetMethod(methodname);

                return mi.Invoke(obj,args);


             }
            catch(Exception ex)
             {
                throw new Exception(ex.InnerException.Message,new Exception(ex.InnerException.StackTrace));
             }
         } wince
[解决办法]
如果仅仅是地址是动态的
为何要这样引用呢
直接重新设置webservice的url不行么

热点排行