比如有两个类
class BaseClass
{
public void BaseMethod()
{ } } class SubClass:BaseClass
{
public void SubMethod1()
{ } public void SubMethod2()
{
}
}是父类和子类的关系,现在如果调用父类的BaseMethod方法的时候,系统会有一个机制去调用子类的方法。那个机制在一个既有的dll中,我们无法修改,现在想在子类的每个方法Catch异常,又不想在每个子类方法中来Catch,就想在父类中的方法做,就类似于Java中的cglib那样,问大家,应该怎么做呢?
class BaseClass
{
public void BaseMethod()
{ } } class SubClass:BaseClass
{
public void SubMethod1()
{ } public void SubMethod2()
{
}
}是父类和子类的关系,现在如果调用父类的BaseMethod方法的时候,系统会有一个机制去调用子类的方法。那个机制在一个既有的dll中,我们无法修改,现在想在子类的每个方法Catch异常,又不想在每个子类方法中来Catch,就想在父类中的方法做,就类似于Java中的cglib那样,问大家,应该怎么做呢?
-----------
这个机制是在BaseMethod方法中调用吗,如果是直接catch BaseMethod方法就行了,如果不是可以
catch 哪个机制。如果机制也catch不到就只能考虑系统的全局异常的扑获了。net有地方可以获取整个系统任何地方抛出的异常!!!
{
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();