我有很多类都继承自一个基类。所以我想记录请求(只是方法的输入参数),响应(如果有的话)和任何异常(如果有的话)。
我可以继续修改所有方法来执行此操作,将来所有方法都需要实现这一点。
或者我在想是否有办法在基类中记录此信息,以便我可以只更新基类而不更新子类方法。我不确定是否有可能这样做?如果没有,最好的方法是做这样的事情吗?
编辑:这是一个Web应用程序(MVC),所有控制器都继承自基类,我需要记录所有操作方法命中(请求,响应,异常等)感谢。
答案 0 :(得分:0)
是的,有办法做到这一点,但它可能会变得混乱。这是一个实现:
public abstract class BaseClass
{
public void DoSomething(int one, int two, int three)
{
Log(string.Format("Method: DoSomething({0}, {1}, {2})", one, two, three));
try
{
DoSomethingInternal(one, two, three);
}
catch (Exception ex)
{
Log(string.Format("Method: DoSomething Exception: " + ex.ToString()));
throw ex;
}
}
public abstract void DoSomethingInternal(int one, int two, int three);
}
public class ChildClass : BaseClass
{
public override void DoSomethingInternal(int one, int two, int three)
{
throw new Exception("I have no idea what to do");
}
}
这些方法实际上存在于基类中,该基类调用子类实现的抽象方法。这些可以包含在try / catches中以捕获任何错误。 C#6使用异常过滤器变得更容易,但我将由您决定使用。