Я хотел получить класс из предиката , но похоже, что предикат <> запечатан. В моем случае я хотел просто вернуть инвертированный (!) Результат назначенной функции. У меня есть другие способы достижения цели. Мой вопрос заключается в том, о чем могли подумать дизайнеры MS, решив запечатать Predicate <>?
Не задумываясь, я придумал:
(а) упростил их тестирование, просто время компромисса затрат
(б) «ничего хорошего» не может быть получено из предиката <>
Что ты думаешь?
Обновление: существует n предикатов, которые динамически добавляются в список предикатов на этапе инициализации. Каждый является взаимоисключающим (если добавлен Abc, NotAbc добавляться не будет). Я заметил шаблон, который выглядит так:
bool Happy(IMyInterface I) {...}
bool NotHappy(IMyInterface I) { return !Happy(I); }
bool Hungry(IMyInterface I) {...}
bool NotHungry(IMyInterface I) { return !Hungry(I); }
bool Busy(IMyInterface I) {...}
bool NotBusy(IMyInterface I) { return !Busy(I); }
bool Smart(IMyInterface I) {...}
bool NotSmart(IMyInterface I) {...} //Not simply !Smart
Дело не в том, что я не могу решить проблему, а в том, что я удивляюсь, почему я не могу решить ее определенным образом.