C# 基于某个静态布尔值的方法的条件执行
我想做一些类似的事情:C# 基于某个静态布尔值的方法的条件执行,c#,C#,我想做一些类似的事情: public void DoSomething() { if (!SomeStaticClass.CanDoWork) { return; } } public void DoSomethingElse() { if (!SomeStaticClass.CanDoWork) { return; } // .... } 我希望避免重复,因为这将出现在许多类方法中 我试图调查,但似乎无法轻松解决此问题。 如果没有“简单”的
public void DoSomething()
{
if (!SomeStaticClass.CanDoWork)
{
return;
}
}
public void DoSomethingElse()
{
if (!SomeStaticClass.CanDoWork)
{
return;
}
// ....
}
我希望避免重复,因为这将出现在许多类方法中
我试图调查,但似乎无法轻松解决此问题。
如果没有“简单”的方法,这可以通过方法属性或任何其他“简单”的方法来实现,因为最后一种方法是为每个方法添加一个if语句。根据您给出的上下文,我想到的第一件事是制作一个包含if语句的包装方法。它将得到实际的方法作为参数,并有条件地加以实现
public class MyClass
{
public void DoSomething()
{
ConditionalExcecution(()=> DoSomethingOnlyCode());
}
private void DoSomethingOnlyCode()
{
// here the entire code
}
private void DoSomethingElseOnlyCode()
{
// here the entire code
}
public void DoSomethingElse()
{
ConditionalExcecution(()=> DoSomethingElseOnlyCode());
}
private void ConditionalExcecution(Action action)
{
if (SomeStaticClass.CanDoWork)
{
action();
}
}
}
这样,if语句就只能放在1个位置,并通过私有方法向API的用户隐藏无条件方法代码
根据您的上下文,可能会有更好的解决方案。也许您可以创建并使用Factories。您能给我们提供更多上下文吗?这两种方法是否也被称为依赖于另一个条件?乍一看,您可能有一个包装方法,它包含这个if语句并获取一个动作作为参数