Reflection, activator.createinstance
private void button1_Click(object sender, EventArgs e)
{
var assembly = Assembly.Load("CPRG253.School.Domain");
var mgr = assembly.CreateInstance("CPRG253.School.Domain.XmlStudentManager");
var t = mgr.GetType();
var items = t.InvokeMember("GetAll", BindingFlags.InvokeMethod, null, mgr, null);
uxTypes.Items.Clear();
uxTypes.DataSource = items;
uxTypes.DisplayMember = "LastName";
}
----------------------------------------------------------------------------------
private void button2_Click(object sender, EventArgs e)
{
var assembly = Assembly.LoadFile(@"C:\CPRG253\CPRG253.RealEstate.Domain.dll");
var t = assembly.GetType("CPRG253.RealEstate.Domain.FileAccessObject");
var obj = Activator.CreateInstance(t);
var m = t.GetMethod("GetCities");
var cities = m.Invoke(obj, null);
uxTypes.Items.Clear();
uxTypes.DataSource = cities;
uxTypes.DisplayMember = "Name";
}
-----------------------------------------------------------------
public class FormLoader
    {
        public static Form CreateForm(string formName, 
                                      Form mdiParent, 
                                      object[] formParameters)
        {
            var assembly = Assembly.GetCallingAssembly();
            var t = assembly.GetType(formName);
            var parts = formName.Split('.');
            var fName = parts[parts.GetUpperBound(0)];
            Form frm = mdiParent.MdiChildren.SingleOrDefault(f => f.GetType().Name == fName);
            if(frm == null || frm.IsDisposed)
            {
                frm = (Form)Activator.CreateInstance(t, formParameters);
                frm.MdiParent = mdiParent;
            }
            frm.Show();
            frm.BringToFront();
            return frm;
        }
    }
--------------------------------------------------------------------
  private void child1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormLoader.CreateForm("FormsLoaderDemo.ChildForm1", this, null);
        }
        private void child2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormLoader.CreateForm("FormsLoaderDemo.ChildForm2", this, new object[] { "UPDATE FORM" });
        }
 
No comments:
Post a Comment