要求呼叫者输入参数A或B进行方法 - 但不是两者兼而有之



我有一个带有3个参数的方法,a,b,c

public MyObj SelectStuff(int A, string B, bool C)
{
...
}

我希望呼叫者被迫输入A或B,而不是两者兼而有之 - 并且总是C。使用命名参数是可取的。

所以这还可以

SelectStuff(A: 3, C: false)

这还可以

SelectStuff(B: "Hello", C: false)

这不是

SelectStuff(A: 2, B: "Bye", C: true)

这不是

SelectStuff(B: "hi")

我在Google上什么也看不到此。

,如果可能的话,我想要一种简洁的整洁方法,具有最小的代码。这可能吗?

您可以用三个参数隐藏该方法 private ,然后创建两个公共方法,并使用a或b的签名(始终使用C)。<<<<

这两种公共方法将调用内部方法传递丢失参数的常规值,以使您可以理解两种公共方法中的哪一个被称为

public MyObj SelectStuff(int A, bool C)
{
    return SelectStuff(A, null, C);
}
public MyObj SelectStuff(string B, bool C)
{
    return SelectStuff(-1, B, C);
}
private MyObj SelectStuff(int A, string B, bool C)
{
    if(string.IsNullOrEmpty(B))
    {
       // Called from the method with A,C
       ....
    }
    else
    {
       // Called from the method with B,C
       ....
    }
}

当然,此解决方案要求NULL字符串作为参数B没有有效的输入,并且对于具有值-1的整数A。

没有机会根据您的喜好限制参数。

相关内容

最新更新