已知在C#中新建窗体
为
Form1 lw_dome = new Form1();
lw_dome.ShowDialog();//以模式方式打开窗体!
现在我有一百个这样的窗体,
每一个窗体的名字没有一定的规律或有规律
我把这些窗体的名字都存在数据库里的一张表里,
那么,现在我需要在点击一个按钮里说可以打开对应的窗体!!!
可以用以下的法进行处理
Assembly assembly = Assembly.LoadFile("装配件的全路径及名称");
Type t = assembly.GetType("名字空间.类名", true, true);
object obj = Activator.CreateInstance(t);
if(obj is Form)
((Form)obj).Show();
//-----------------------------------------------------------------------------------
//Form newForm = (Form)Assembly.Load(namespace).CreateInstance(className);
//newForm.Show();
//------------------------------------------------------------------------------
同时对于反射类命名空间,包含了多种的反射机制。可以查看
http://www.microsoft.com/china/msdn/archives/library/dnadvnet/html/vbnet10082002.asp
同时包含了可以加载类远程类对像与构造函数的方法
[C#]
ObjectHandle hdlSample;
IMyExtenderInterface myExtenderInterface;
string argOne = "Value of argOne";
int argTwo = 7;
object[] args = {argOne, argTwo};
// Uses the UrlAttribute to create a remote object.
object[] activationAttributes = {new UrlAttribute("http://localhost:9000/MySampleService")};
// Activates an object for this client.
// You must supply a valid fully qualified assembly name here.
hdlSample = Activator.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken",
"samplenamespace.sampleclass",
true,
BindingFlags.Instance|BindingFlags.Public,
null,
args,
null,
activationAttributes,
null);
myExtenderInterface = (IMyExtenderInterface)hdlSample.Unwrap();
Console.WriteLine(myExtenderInterface.SampleMethod("Bill"));