Условно передать необязательные параметры в C # - PullRequest
0 голосов
/ 03 июля 2018

У меня есть функция с более чем 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 параметров, то у меня будет слишком много комбинаций, поэтому я не думаю, что моя реализация выполнима. Как правильно это сделать?

1 Ответ

0 голосов
/ 03 июля 2018

Ваша функция имеет длинный список параметров

Я бы передал объект в качестве параметра, создав класс 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. При добавлении нового свойства вы не будете изменять параметр метода вызова.
...