Я хотел получить класс от Predicate‹IMyInterface>, но оказалось, что Predicate‹> запечатан. В моем случае я хотел просто вернуть инвертированный (!) результат назначенной функции. У меня есть другие способы достичь цели. Мой вопрос заключается в том, о чем могли подумать разработчики 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
Дело не в том, что я не могу решить проблему, а в том, что мне интересно, почему я не смог решить ее определенным образом.