C# 中的默认 setter 参数

Default setter param in C#

我有一个 class 我想实现,但是有很多条件逻辑,所以我决定实现一个构建器(类似)模式。这些设置器几乎只是要设置的标志

private class MockBuilder
{
  private bool _flag1 = false;
  private bool _flag2 = false;
  // arbitrarily long amount of flags here

  public MockBuilder()
  {
  }
  public void DoFlag1(bool value = true)
  {
      _flag1 = value;
  }
  public void DoFlag2(bool value = true)
  {
      _flag2 = value;
  }
  public builtObject Build()
  {
    // Build with current flags
  }
}

长话短说,我研究了设置器的默认参数和一些问题,例如:c#: getter/setter 并想知道是否有更多 "C#" 方法来做到这一点,类似于

public bool flag1 { get; set(value = true); }

能够像这样调用构建器的最终目标

var object = new MockBuilder();
builder
  .flag1()
  .flag3()
// etc...
  .generate();

C# 是否为 setter 实现某种默认值?这是构建器模式的好用法吗?我应该一起使用不同的模式吗?

像这样使用位掩码:

public enum ThingsToDo
{
    // use powers of 2!
    DoThis          = 1 << 0,
    DoThat          = 1 << 1,
    WhileYouAreAtIt = 1 << 2,
    AndFinally      = 1 << 3
}
class Program
{
    static void Main(string[] args)
    {
        var First = ThingsToDo.DoThat | ThingsToDo.DoThis;
        var Next = ThingsToDo.WhileYouAreAtIt | ThingsToDo.AndFinally;
        // ...
        if ((First & ThingsToDo.DoThis) == ThingsToDo.DoThis) {
            // do this 
        }

        if ((Next & ThingsToDo.WhileYouAreAtIt) == ThingsToDo.WhileYouAreAtIt)
        {
            // do while you are at it
        }
    }
}