这个可以搞dll的动态加载.做到只程式自动更新.
public static UserControl CreateInstace()
{ //WindowsFormsControlLibrary1是文件名,不加后缀
Assembly a = Assembly.Load("WindowsFormsControlLibrary1");//加载
Type type = a.GetType("WindowsFormsControlLibrary1.UserControl1");//获取类型
//WindowsFormsControlLibrary1.UserControl1 合名空
object o = Activator.CreateInstance(type);//创建对象
UserControl user = o as UserControl; //强转
return user;
}
UserControl user = SimpleFactory.CreateInstace();
OpenChildForm(user, panel1); //调用
private void OpenChildForm(UserControl childForm, Panel panel)
{
childForm.Dock = DockStyle.Fill;
panel.Controls.Add(childForm);
panel.Tag = childForm;
childForm.BringToFront();
childForm.Show();
}
下面是方法调用
//无参数
Assembly a = Assembly.Load("WindowsFormsControlLibrary1");//加载
//WindowsFormsControlLibrary1是文件名,不加后缀
Type type = a.GetType("WindowsFormsControlLibrary1.UserControl1");//获取类型
//WindowsFormsControlLibrary1.UserControl1 合名空间:WindowsFormsControlLibrary1,类名:UserControl1
object o = Activator.CreateInstance(type);//创建对象
MethodInfo inFo = type.GetMethod("ShowTest", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);
bool bool1 = (bool)inFo.Invoke(o, null);//调用方法并返回值
Assembly a = Assembly.Load("WindowsFormsControlLibrary1");//加载
//WindowsFormsControlLibrary1是文件名,不加后缀
Type type = a.GetType("WindowsFormsControlLibrary1.UserControl1");//获取类型
//WindowsFormsControlLibrary1.UserControl1 合名空间:WindowsFormsControlLibrary1,类名:UserControl1
object o = Activator.CreateInstance(type);//创建对象
MethodInfo inFo = type.GetMethod("ShowTest1", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase);
bool cc = (bool)inFo.Invoke(o, new object[] { "中国中国一定强." });
属性、字段
//使用的是。netFramwork 4.5
Assembly a = Assembly.Load("WindowsFormsControlLibrary1");//加载
Type type = a.GetType("WindowsFormsControlLibrary1.UserControl1");//获取类型
object o = Activator.CreateInstance(type);//创建对象
//GetProperties获取所有属性
PropertyInfo[] tt = type.GetProperties();
PropertyInfo inFo = tt.FirstOrDefault(oo => oo.Name.Equals("Title"));
inFo.SetValue(o, "你看,你看");
this.Text = (string)inFo.GetValue(o);
//type.GetFields 获取所有字段一样操作
反射写SQL语句