在当前上下文中,我们有两种方法Start和Stop。这两个方法是从函数顺序调用的。一个人可能有机会在他的方法中调用Start()但忘记调用Stop()。 e.g。
private void A()
{
Start();
//Buisness logic goes here
}
在这种情况下编译代码时,需要显示警告或错误,通知每个Start()应该有一个相应的Stop()。有人可以提出如何在C#中实现相同的想法吗?
正确的实施方式是
private void A()
{
Start();
//Buisness logic goes here
Stop();
}
答案 0 :(得分:2)
我建议您更改模式以处理Start
和Stop
,而不会将其暴露给程序员。
更改实施Start
&的班级Stop
代替实施Execute
方法,甚至不公开Start
& Stop
。
public class MyClass
{
private void Start(){} // old public method
private void Stop(){} // old public method
public void Execute(Action action)
{
Start();
action();
Stop();
}
}
用法:
var impl = new MyClass();
impl.Execute(() => {
// do something in between start & stop
});
答案 1 :(得分:1)
有一个类(例如StartStop)实现IDisposable
public class StartStop : IDisposable
{
public StartStop() { Start(); }
public void Dispose() { Stop(); }
protected void Start() { /*...*/ }
protected void Stop() { /*...*/ }
}
将此课程与using
:
private void A()
{
using( var startStopCaller = new StartStopCaller() )
{
// Your code here
}
}
using
将确保Dispose()
以及随后Stop()
将被调用,除非发生严重崩溃。
答案 2 :(得分:0)
这可以通过多种方式来解决,主要有两个方向:
Start
和Stop
方法的界面。然后让调用类简单地将它们视为此接口,并确保它调用这两种方法,无论它使用哪种实现。