Установить необязательные параметры по умолчанию на основе других параметров - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу добиться следующего сценария:

Метод:

public void Process(Request request, string statusCode=request.statusCode, string statusVal=request.statusVal) 
{ 
... 
}

Очевидно, что вышеупомянутая конструкция не работает в C #.

Так что в этом случае процесс метода занимает 3параметры, в которых вызывающий параметр может или не может передавать statusCode и / или statusVal в аргументах.

Если значения не переданы, они должны принимать значения из объекта запроса в качестве значения по умолчанию.Короче говоря, значение по умолчанию необязательных параметров может быть динамическим или основанным на другом обязательном параметре.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вы не можете использовать дополнительные параметры, подобные этому.Вот почему я бы предложил перегрузить метод.Может выглядеть следующим образом.

public void Process(Request request) 
{ 
    Process(request, request.statusCode, request.statusVal);
}

public void Process(Request request, string statusCode, string statusVal) 
{ 
    //your logic
}

В этом случае вы можете вызывать метод только с Request или определенными statusCode и statusVal, и оба будут иметь одинаковую логику.

Для получения дополнительной информации посмотрите C # в глубине: перегрузка

0 голосов
/ 20 сентября 2018

Вот как вы можете использовать необязательные параметры, как описано:

public void Process(Request request, string statusCode = null, string statusVal= null) 
{ 
    statusCode = statusCode ?? request.statusCode;
    statusVal = statusVal ?? request.statusVal;
    ... 
}

Теперь вы можете назвать это любым из следующих способов:

  • Process(request);
  • Process(request, "code");
  • Process(request, "code", "val");
  • Process(request, statusCode: "code");
  • Process(request, statusVal: "val");
...