是否有一种设计模式可以帮助我避免在许多方法中重复DoThisStepFirst()
?
class Program
{
static void Main(string[] args)
{
Method1();
Method2();
MethodN();
}
private static void DoThisStepFirst()
{
// Implementation
}
private static void Method1()
{
DoThisStepFirst();
// Implementation
}
private static void Method2()
{
DoThisStepFirst();
// Implementation
}
// {...}
private static void MethodN()
{
DoThisStepFirst();
// Implementation
}
}
编辑1:我只想说,这是一个人为的例子 我的实际实现包括带参数的方法签名和每种方法中的非平凡操作。
编辑2:
@Charlie Martin希望了解更多有关该计划的信息。 所以这就是我实际上要做的事情。
DoThisStepFirst()
方法的内部,我想初始化SessionState。答案 0 :(得分:4)
如果它是一个测试工具,那么你的单元测试框架应该有一个TestFixtureSetup
方法,它将在你的测试运行之前先运行:
对于NUnit:
[TestFixtureSetUp]
public void Setup()
{
}
对于MSTest:
[TestInitialize()]
public void Startup()
{
//Do setup here
}
答案 1 :(得分:3)
我猜你可以有一个方法总是调用DoThisStepFirst()
然后执行传递的操作:
private static void DoSomething(Action doSomethingElse)
{
DoThisStepFirst();
doSomethingElse();
}
答案 2 :(得分:3)
private static void MethodCommon(Func f)
{
DoThisStepFirst();
f();
}
private static void Method1()
{
MethodCommon(() =>
doSomething();
);
}
答案 3 :(得分:1)
老实说,如果不了解更多关于pgram的内容,就无法回答这个问题。看起来“DoThisStepFirst”是某种初始化;这很容易想到
DoThisStepFirst();
Method1(); // and so on
等等,但似乎每个方法都需要初始化。那么接下来的问题是“为什么每个方法都在状态中徘徊,所以你需要继续重新初始化?”
走另一个方向,你可以想象你必须在每个步骤中进行一些初始化的程序,并且它是相同的初始化,在这种情况下你很好地卡住了。
答案 4 :(得分:0)
如何在构造函数中将代码放入DoThisStepFirst()中。如果所有人都需要它来运行才能在那里进行操作,那么操作就很有可能进入那里。除非它重置在方法执行任何操作之前需要重置的状态/行为。
答案 5 :(得分:0)
不,通常没有。也许你可以提供一些关于你想要完成什么的细节?