问题描述
下面的代码有错,主要是表达一下用意:objectfrm=Application.OpenForms["Form1"];if(frm!=null){TypetypeFrm=frm.GetType();MethodInfoinf=typeFrm.GetMethod("Fill",newType[]{typeof(string)});inf.Invoke(frm,newobject[]{"xxx"});}当前项目为Prj1,其中Form1在另一个项目Prj2中,并且Prj1没有引用Prj2,Form1.cs文件中有Fill(stringcode)的public方法,想通过反射调用Form1的Fill方法,请问该怎样修改上述代码?
解决方案
解决方案二:
那我也给你举个例子,这样获取Type:Assembly.Load("System.Data,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089").GetType("System.Data.SqlClient.SqlConnection")
解决方案三:
try{Assemblyassembly=Assembly.LoadFile(dll);stringp=Path.GetFileNameWithoutExtension(dll);file=p+".Class1";type=assembly.GetType(file);//必须使用名称空间+类名称objectobj=assembly.CreateInstance(file);//必须使用名称空间+类名称MethodInfomethod=type.GetMethod("Fill");//方法的名称method.Invoke(obj,newobject[]{"xxx"});//带参数的实例方法}catch{MessageBox.Show(".......!");}
解决方案四:
据说反射消耗性能。