|
class SampleClass
{
public void Call1(String str)
{
MessageBox.Show("Call1 : " + str);
}//
public void Call2(String str)
{
MessageBox.Show("Call2 : " + str);
}//
}////
ต้องการ create object ของ คลาส SampleClass เรียกใช้ Method Call1 ได้ดังนี้ครับ
Assembly assembly = Assembly.GetExecutingAssembly();
AssemblyName assemblyName = assembly.GetName();
Type objType = assembly.GetType(assemblyName.Name + ".SampleClass");
object obj = Activator.CreateInstance(objType);
object[] mParam = new object[] { "Chiwa Kantawong" };
objType.InvokeMember("Call1",
BindingFlags.InvokeMethod,
null, obj, mParam);
และสามารถ casting มาใส่ Object ได้นะครับ เช่น
SampleClass smp = (SampleClass)obj; 
smp.Call1("Pee Pee");
อีกอันประยุกต์ใช้กับ ChildForm ที่เป็น single instance ครับ
private void CreateChildForm(String formName)
{
Form[] AllChild = this.MdiChildren;
Boolean found = false;
Form foundForm = null;
foreach (Form childForm in AllChild)
{
if (childForm.Name == formName)
{
foundForm = childForm;
found = true;
}
}
if (found)
{
try
{
foundForm.Focus();
}
catch (Exception) { }
}
else
{
Assembly assembly = Assembly.GetExecutingAssembly();
AssemblyName assemblyName = assembly.GetName();
Type objType = assembly.GetType(assemblyName.Name + "." + formName);
Form form = (Form) Activator.CreateInstance(objType);
form.MdiParent = this;
form.Show();
form.BringToFront();
}
}//
|