public class bas
{
  public virtual void fn1()
  { .....
  }
}public class test
{
  public test()
  {
     B.fn=fn2    //想用fn2替代bas.fn1方法 要怎么修改才正确?
  }
  
  public bas  B
  public void fn2()
  {}
}

解决方案 »

  1.   


     class test
        {
            static void Main(string[] args)
            {
                bas one = new Inherited();
                one.fn1();
            }
        }    public class bas
        {
            public virtual void fn1()
            {
            }
        }    public class Inherited :bas
        {
            public override void fn1()
            {
                
            }    }面向对象的多态
      

  2.   

    使用委托,象下面这样
    一、类
    class OneClass
    {
        public delegate void MethodHandler();
        public MethodHandler Function;    public OneClass()
        {
            this.Function = new MethodHandler(this.OriginalMethod);
        }    private void OriginalMethod()
        {
            Console.WriteLine("This is the original method.");
        }
    }
    二、准备替代用的方法(在Program类里)
    private void AnotherMethod()
    {
        Console.WriteLine("This is another method.");
    }
    三、运行时替换掉方法
    OneClass a = new OneClass();
    a.Function();a.Function = new OneClass.MethodHandler(new Program().AnotherMethod);
    a.Function();
    四、结果:
    This is the original method.
    This is another method.