Ste*_*ven 5 c# design-patterns
我有一个像这样的方法:
public Something MyMethod()
{
Setup();
Do something useful...
TearDown();
return something;
}
Run Code Online (Sandbox Code Playgroud)
Setup和TearDown方法位于基类中.
我遇到的问题是我必须使用Setup()和TearDown()方法调用一遍又一遍地编写这种类型的方法.
编辑:这个方法的棘手部分是"做一些有用的东西......"仅适用于此方法.这个部分对我创建的每个方法都不同.
另外,我可以将MyMethod2,MyMethod3放在一个类中.在所有情况下,我想运行设置和拆解
有没有一种优雅的方式来做到这一点,而不必每次都写这个?
也许我是妄想,但是这是一种向方法添加属性并拦截方法调用的方法,所以我可以在调用之前和之后做一些事情?
只需在抽象基类中实现此方法,如下所示:
public Something MyMethod()
{
Setup();
DoSomethingUsefull();
TearDown();
return something;
}
protected abstract DoSomethingUsefull();
Run Code Online (Sandbox Code Playgroud)
现在,您只需要覆盖继承类中的一个方法 - DoSomethingUsefull()
这是模板方法模式
public SomeThing MyMethod()
{
return Execute(() =>
{
return new SomeThing();
});
}
public T Execute<T>(Func<T> func)
{
if (func == null)
throw new ArgumentNullException("func");
try
{
Setup();
return func();
}
finally
{
TearDown();
}
}
Run Code Online (Sandbox Code Playgroud)