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语句并获取一个动作作为参数