将 class 作为函数的参数传递时,是否可以在构建期间将 class 中的 属性 标记为必需?

When passing a class as a parameter of a function, can a property of that class be marked as required during build time?

我希望能够将 class 设置为方法的参数,如下所示:

public DoThing(MyClass class)
{
    //TODO: do thing
}

但我还希望 class 的某些属性是必需的。我可以检查这些属性并在运行时抛出错误或其他东西,但我想知道是否可以在构建时声明其中一些所需的属性。

我总能列出参数,但我喜欢使用 classes 使代码更易于阅读。这是可能的还是我只需要进行运行时检查?


澄清一下,我想做这样的事情,不那么含糊:

DoThing(true, true, null, true);

一眼看不出来那些属性是什么。所以通常我会把它设为 class 并像这样设置值:

var myClass = new MyClass() 
{
    IsDone = true,
    IsNotDone = null,
    CouldItBeDone = false,
    IfNotDone = true
};

DoThing(myClass);

当我阅读代码时,我可以很容易地看到属性的名称,这让我知道我在看什么。但是,如果 IsNotDone 不能为空,我就无法在构建期间检查它。我必须在运行时进行空检查。

看来你想做的事情 named arguments 会很巧妙地解决,而不需要使用助手 class。

只需像这样调用您的函数,给出明确的参数名称:

DoThing(quickly: true, silently: true, why: null, verbose: true);

您可以按任何顺序传递命名参数。