【发布时间】:2017-03-21 08:57:24
【问题描述】:
在当前上下文中,我们有两个方法 Start 和 Stop。这两个方法是从一个函数顺序调用的。有可能一个人在他的方法中只调用了 Start() 但忘记调用 Stop()。例如
private void A()
{
Start();
//Buisness logic goes here
}
在这种情况下,当编译代码时,需要显示警告或错误,通知每个 Start() 都应该有一个相应的 Stop()。有人可以就如何在 C# 中实现相同的想法提出建议吗?
正确的实现方式是
private void A()
{
Start();
//Buisness logic goes here
Stop();
}
【问题讨论】:
-
听起来你应该只实现模板方法模式。或者把
Start()改成Execute(Action)。 -
让这个类实现
IDisposable,并在Dispose中调用Stop(或者让Start返回IDisposable而不是类本身)。对IDisposable未在范围内进行处理有不同的检查。 -
那么 Start 和 Stop 不可能被顺序调用,而是从不同的方法调用?