有两个类A,B,
class A
{
public void apply(){....}
}
我想在B里通过字符串Method_Name里调用A里的方法如A.apply()
class B
{
public void invokefunctionA(string methodname)
{
Assembly assem = Assembly.Load("A");
Type type = assem.GetType("A");
MethodInfo method = type.GetMethod(methodname);
Object obj = Activator.CreateInstance(type);
method.Invoke(obj , null);
}
}
但现在问题是这个A必须是A.dll,我的两个类A,B都在一个dll里的,不可能分开.
Java里是可以用动态load一个类的,那C#怎么要必须load一个dll了?它能不能也可以根据类名动态装载?
class A
{
public void apply(){....}
}
我想在B里通过字符串Method_Name里调用A里的方法如A.apply()
class B
{
public void invokefunctionA(string methodname)
{
Assembly assem = Assembly.Load("A");
Type type = assem.GetType("A");
MethodInfo method = type.GetMethod(methodname);
Object obj = Activator.CreateInstance(type);
method.Invoke(obj , null);
}
}
但现在问题是这个A必须是A.dll,我的两个类A,B都在一个dll里的,不可能分开.
Java里是可以用动态load一个类的,那C#怎么要必须load一个dll了?它能不能也可以根据类名动态装载?
class B
{
A a = new A();
public void invokefunctionA(string methodname)
{
//Assembly assem = Assembly.Load("A");
Type type = a.GetType();
MethodInfo method = type.GetMethod(methodname);
//Object obj = Activator.CreateInstance(type);
method.Invoke(a , null);
}
}
其实也蛮简单的,语言学多了也麻烦,各个一套标准,哎...