如何装饰c#中的所有派生方法?

时间:2019-11-03 17:04:18

标签: c# inheritance exception decorator

我有以下情况:

class A
{        
    abstract void foo()
    {
    }
}

许多类继承自A,并覆盖foo()

我想捕获所有被覆盖的foo引发的异常。

我考虑过装饰A的{​​{1}},并尝试..catch所有foo的内容,并希望重写类的foo还会用来自底部foo的{​​{1}}的try..catch装饰。

这可行吗?如果是这样,怎么办? 有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用此:

public class A
{        

    public void Foo()
    {
      try
      {
        DoFoo();
      }
      catch
      {
      }
    }

    protected abstract void DoFoo();

}

因此您将写:

public class B : A
{        

    protected override void DoFoo()
    {
    }

}