STRING?DELPHI?procedure TForm1.Button1Click(Sender: TObject);
var
a: TPersistentClass;
begin
a := FindClass('TClassa');
TClassa(a).Create;
end;
var
a: TPersistentClass;
begin
a := FindClass('TClassa');
TClassa(a).Create;
end;
我简单给你介绍一下JAVA的反射机制(C#向JAVA学习,所以也差不多)。JAVA 中类CLASS的forname方法输入参数为字符串,输入为一个Class类(JAVA中所有的类都继承自该类),你只需要在输入参数中以正确的格式给出你说的窗口类的名称和路径,编译器就可以反回这个类的一个实例
Form frm=new Form();
frm.Name=FrmName;
frm.Show();
Form frm=new Form();
frm.Name=FrmName;
frm.Show();
-------------
pass
string strRootPath = Server.MapPath(".");
string strDllPath = strRootPath + @"\" + @"bin\页面所在的DLL名称.dll";
System.Reflection.Assembly pAssembly = Assembly.LoadFrom(strDllPath);System.Type pType = pAssembly.GetType("页面所在的命名空间.窗体类名");object pObj = System.Activator.CreateInstance(pType);pObj 就是你要的对象,转换后就可以用了
private void button1_Click(object sender, System.EventArgs e)
{
Assembly assm = Assembly.LoadFrom("e:\\WindowsApplication5.dll");
Type TypeToLoad= assm.GetType("WindowsApplication5.Form1");
object obj;
obj = Activator.CreateInstance(TypeToLoad);
Form formToShow = null;
formToShow = (Form)obj;
formToShow.Show();
}
Assembly assm = Assembly.LoadFrom(Application.StartupPath+"\\WindowsApplication1.exe");
Type TypeToLoad= assm.GetType("WindowsApplication1."+FrmName);
object obj = Activator.CreateInstance(TypeToLoad);
Form formToShow = (Form)obj;
formToShow.Show();
请各位大虾赐教了,我的窗体都已经加载到同一个项目中,不涉及用路径怎么做?谢谢。