有两个类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了?它能不能也可以根据类名动态装载?

解决方案 »

  1.   

    试试看 Assembly.GetAssembly .
      

  2.   

    已经解决,是这样做的.
    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);
      }
    }
    其实也蛮简单的,语言学多了也麻烦,各个一套标准,哎...