мне интересно, если это возможно:Validate методы BOOL (ограничения) в списке
Я хотел бы иметь список, где я могу добавить методы BOOL к и проверки этих методов, и когда все они правдивы, возвращение правда. Если хотя бы одно значение false, верните значение false.
Проблема заключается в том, когда я делаю что-то вроде:
private int _value1, _value2, _value3, _value4;
private bool check2()
{
return _value2 + _value3 > _value4;
}
private bool check2()
{
return _value2 + _value3 > _value4;
}
List<bool> constraints = new List<bool>();
constrains.Add(check1());
constrains.Add(check2());
в Bools добавил, конечно, результат проверки при добавлении в список. Я получаю это ;-)
Как я могу составить список методов, которые действительно повторно проверены? С наилучшими пожеланиями,
Matthijs
Это то, что я хотел.
С помощью нижеприведенных ответов. Я сделал это. Может быть полезно для тех, кто ищет то же самое.
public class TestClass
{
private int _value1, _value2, _value3, _value4;
private void button1_Click(object sender, EventArgs e)
{
ConstraintsList cl = new ConstraintsList();
cl.Add(check1);
cl.Add(check2);
bool test1 = cl.AllTrue;
bool test2 = cl.AnyTrue;
_value4 = -5;
bool test3 = cl.AllTrue;
bool test4 = cl.AnyTrue;
_value4 = 5;
cl.Remove(check2);
bool test5 = cl.AllTrue;
bool test6 = cl.AnyTrue;
}
private bool check1()
{
return _value1 + _value2 == _value3;
}
private bool check2()
{
return _value2 + _value3 > _value4;
}
}
с помощью:
public class ConstraintsList
{
private HashSet<Func<bool>> constraints = new HashSet<Func<bool>>();
public void Add(Func<bool> item)
{
try
{
constraints.Add(item);
}
catch(Exception)
{
throw;
}
}
public bool AllTrue { get { return constraints.All(c => c()); } }
public bool AnyTrue { get { return constraints.Any(c => c()); } }
public void Remove(Func<bool> item)
{
try
{
constraints.Remove(item);
}
catch(Exception)
{
throw;
}
}
}
Спасибо Филу за быстрый ответ. Он работает отлично! – user369122