将 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);
您可以按任何顺序传递命名参数。
我希望能够将 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);
您可以按任何顺序传递命名参数。