3

我有一个带有 10 多个可选参数的函数,并且我的程序中有设置来确定是否应该传递参数。例如,

public void MyFunction(bool? b1=null, bool? b2=null, bool? b3=null.. bool? b10=null)

以下是指示是否应设置参数的设置

bool setb1 = false;
bool setb2 = false;
bool setb3 = true;
bool setb4 = false;
bool setb5 = true;

如果我要按照设置来设置参数,那么我将不得不做这样的事情

if (!setb1 && !setb2 && !setb4)
   MyFunction(b3: value3, b5: value5);

如果我有 10 个设置和 10 个参数,那么我的组合会太多,所以我认为我的实现不可行。完成此操作的正确方法是什么?

4

1 回答 1

4

您的函数有一个长参数列表

我会传递一个对象作为参数,创建一个类ConditionModle

你可以在这个类中封装你想要的条件。

public class ConditionModle
{
    public bool setb1 { get; set; }
    public bool setb2 { get; set; }
    public bool setb3 { get; set; }
    public bool setb4 { get; set; }
    public bool setb5 { get; set; }
    ....
    public bool Condition1()
    {
        return !this.setb1 && !this.setb2 && !this.setb4;
    }
}

if (model.Condition1())
    MyFunction(model);

此解决方案可以帮助您的代码

  1. 更清晰,
  2. 添加新的属性或判断方法不会影响之前的方法。
  3. 添加新属性您将不会修改调用方法参数。
于 2018-07-03T17:50:26.667 回答