Обязательные параметры на основе других параметров - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь вызвать метод, который требует некоторых параметров, основанных на предыдущих выбранных параметрах.

Это, вероятно, лучше объяснить на примере:

public static void MyMethod (string p1, string p2, string p3 = "", string p4 = "")
{
}

То, чего я хочу достичь, этотребующий p4, если дано p3.

Если бы я назвал это так:

MyMethod("Hello", "World", "P3", // p4 now required as p3 given a value)

Надеюсь, это имеет смысл.Спасибо.

Ответы [ 3 ]

10 голосов
/ 27 марта 2012

Вместо значений по умолчанию для параметров (что имеет свои проблемы), я бы использовал перегрузку:

public static void MyMethod (string p1, string p2)
{
   MyMethod(p1, p2, "", "");
}

public static void MyMethod (string p1, string p2, string p3, string p4)
{
   ...
}
1 голос
/ 27 марта 2012

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

    public static void MyMethod (string p1, string p2)
{
   MyMthod(p1, p2, "", "");
}

public static void MyMethod (string p1, string p2, string p3, string p4)
{
   if(p3 has a value but p4 is missing the value)
    throw new Exception("p4 is required");

}
1 голос
/ 27 марта 2012

Вы можете сделать то, что предложил @Aliostad, что имеет смысл, если это единственное требование, которое у вас есть. Если нет, я думаю, вам лучше разделить метод на несколько методов с разными именами , чтобы люди, вызывающие ваши методы, не запутались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...