У меня есть IList<Delegate>
, который содержит Func<bool>
с и Predicate<T>
с, где T
меняется. Позже мне нужно разобраться, какие из этих элементов Predicate<T>
s, но я не хочу закрывать дверь для добавления других типов Delegate
в список позже, поэтому я не хочу делать это, идентифицируя объекты с помощью !(current_delegate is Func<bool>)
.
Самая высокая абстракция ниже Predicate<T>
- это MulticastDelegate
, что кажется бесполезным (потребовался бы неуниверсальный тип Predicate
в Predicate<T>
), и определение присутствия универсального параметра также бесполезно, учитывая другой универсальный Delegate
s, которые могут присутствовать в списке.
Единственное, что я рассмотрел, это проверка Name
из Type
. Для меня сравнение строк - это почти запах, но, может быть, это лучший и / или единственный способ - скажи мне.
Каков наилучший способ окончательно определить, что object
- это любой Predicate<T>
, не зная типа T
?