看了下建哥的用反射生成的数组(http://blog.csdn.net/ojlovecd/archive/2008/11/11/3277766.aspx)
感觉不错,学习下,
(1)第一个例子是
代码如下
public void MethodA(int i) { }
public void MethodA(ref int r) {}
static void Main()
{
MethodInfo MInfo;
//用GetMethod调用method类中Method(int i,int j)中的方法,new Type[] {...对应MethodA()方法中参数}
MInfo = typeof(Method).GetMethod("MethodA", new Type[] { typeof(int),typeof(int)});
Console.WriteLine(MInfo.Name);
MInfo = typeof(Method).GetMethod("MethodA", new Type[] {typeof(int) });
Console.WriteLine(MInfo.Name);
MInfo = typeof(Method).GetMethod("MethodA", new Type[] { typeof(int).MakeByRefType() });
Console.WriteLine(MInfo.Name);
}
}
}
第二个例子是
代码如下
public class A
{
public void Area(int i, int j)
{
Console.WriteLine("Results:{0}", i * j);
}
}
public class B
{
public void Min(int i, int j)
{
Console.WriteLine("Results:{0}", i + j);
}
}
class InvokeInfo
{
static void Main()
{
A MyA = new A();
B MyB = new B();
Type TypeA = Type.GetType("ConsoleApplication2.A");//或者是Type TypeA = typeof(A);
MethodInfo MethodInfoa = TypeA.GetMethod("Area");
Type TypeB = Type.GetType("ConsoleApplication2.B");
MethodInfo MethodInfob = TypeB.GetMethod("Min");
Console.WriteLine("Type Name:{0}{1}", TypeA.FullName, MethodInfoa.Invoke(MyA,new Object[] { 10, 12 }));
Console.WriteLine("Type Name:{0}{1}", TypeB.FullName, MethodInfob.Invoke(MyB, new Object[] { 12, 13 }));
}
}
}
其实GetMethod(string name, Type[] types)返回的是MethodInfo对象
代码一中
Console.WriteLine(MInfo.Name);
//调用InVoke方法,Invoke(object obj,[] object param)第二个参数是一个对象数组
MInfo.Invoke(M, new Object[] { 3, 4 });
未完.....
没有时间......