比如有两个类
    class BaseClass
    {
        public void BaseMethod()
        {        }    }    class SubClass:BaseClass
    {
        public void SubMethod1()
        {        }        public void SubMethod2()
        {
        }
    }是父类和子类的关系,现在如果调用父类的BaseMethod方法的时候,系统会有一个机制去调用子类的方法。那个机制在一个既有的dll中,我们无法修改,现在想在子类的每个方法Catch异常,又不想在每个子类方法中来Catch,就想在父类中的方法做,就类似于Java中的cglib那样,问大家,应该怎么做呢?

解决方案 »

  1.   

    系统会有一个机制去调用子类的方法。
    -----------
    这个机制是在BaseMethod方法中调用吗,如果是直接catch BaseMethod方法就行了,如果不是可以
    catch 哪个机制。如果机制也catch不到就只能考虑系统的全局异常的扑获了。net有地方可以获取整个系统任何地方抛出的异常!!!
      

  2.   

    要处理的异常的方法都在基类中声明成可被子类重写的。且它们的调用都在基类里,这样在基的调用重写的方法时就可以处理在子类里发生的异常了。例如:class BaseClass
    {
    public void BaseMethod()
    {
    try
    {
    SubMethod1();
    SubMethod2();
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex);
    }
    }
    public virtual void SubMethod1(){}
    public virtual void SubMethod2(){}
    }class SubClass : BaseClass
    {
    public override void SubMethod1()
    {
    throw new Exception("SubMethod1");
    } public override void SubMethod2()
    {
    throw new Exception("SubMethod2");
    }
    }
    //调用子类的方法
    SubClass b = new SubClass();
    b.BaseMethod();