日期:2014-05-18  浏览次数:20771 次

求一个方法,急,谢谢!
有三个类A,B,C 其中B中有一个方法,C类实现了该方法,如何在A类中通过B类调到C类的这个方法.
其中A不能直接调用C.

------解决方案--------------------
namespace ConsoleApplication1
{
class Test
{
static void Main()
{
a.ReturnC();
}
}
public static class a
{

public static Type ReturnC()
{
Assembly ass = Assembly.Load("ConsoleApplication1");//取得程序集
Type t = typeof(c);//获取类型
c c = (c)ass.CreateInstance(t.FullName);//创建对象
return (Type)t.GetMethod("xxx").Invoke(c, null);//调用实例方法
}
}
public abstract class b
{
//抽象类
public abstract void xxx();
}

public class c : b
{
//实现
public override void xxx()
{
Console.WriteLine("hgfhgf");
}
}
}




用反射做,不知道对不对,学习下
------解决方案--------------------

class b 

public virtual void fun1(){Console.Writeln("B");} 


class c:b 

public override void fun1(){Console.Writeln("c");} 

class A 

public event EventHandler InvokedMethod;
public void InvokeMethod() 

EventHandler eh=InvokedMethod;
if(eh!=null)
{
eh(this,EventArgs.Empty);
}



//调用:
void invoke()
{
 A a=new A();
 a.InvokedMethod+=new EventHandler()..
{
调用C在这里,用事件响应的方法
}
}