У меня есть следующий метод (я иллюстрировать то, что мне нужно в комментарии метода):Cycle и метод доступа в дорожат
public static Dictionary<int, int> Foo(bool os, bool rad, bool aci, bool outr, string distrito = null)
{
if (os == false && rad == false && aci == false && outr == false)
{
return new Dictionary<int, int>();
}
var parameters = MethodBase.GetCurrentMethod().GetParameters();
foreach (ParameterInfo parameter in parameters)
{
// I would love if parameter.Value existed, because:
// if (parameter.Value==true) {
// x++
// if (x == 1) string s = "true" + parameter.Name;
// if (x > 1) s += "Additional true" + parameter.Name;
// }
// s += "End";
}
return null;
}
я должен знать, если один или несколько значений параметров bool
. Так как их четыре, представьте себе комбинацию if
, которую я должен был бы сделать, чтобы проверить, истинно ли только одно, или более одного.
Итак, как я могу переключить текущее значение входящих параметров метода без использования самой переменной параметра?
Это действительно зависит от того, что вы пытаетесь сделать. Однако, когда вы сталкиваетесь с подобным сценарием, обычно это означает, что вам нужно сделать шаг назад и переосмыслить свой дизайн. Немного больше понимания требований может помочь. Когда вы это описываете, вы можете просто сделать OR (||) всех значений, и вы должны получить то, что вам нужно, но у меня есть ощущение, что для этого есть нечто большее. – JuanR
без знания контекста .... Я бы использовал bitarray или массив bools. и используйте linq, чтобы определить, истинно ли только одно или даже сколько истинно. –
Я обновил вопрос и добавил свою логику в комментарии к методу. По сути, каждый 'bool' представляет' WHERE' в SQL Select. Если это первый «истинный», это один синтаксис запроса. Для дополнительного «истинного» добавляется оригинальный синтаксис, но это еще один синтаксис (следовательно, знаете, является ли это первым «bool» или более). – Dillinger