我有一个 IList<Delegate>
包含一些 Func<bool>
s 和一些 Predicate<T>
s,其中 T
变化。我稍后需要整理出这些项目中的哪些是 Predicate<T>
s,但不想关闭添加其他 Delegate
的大门稍后将类型添加到列表中,所以我不想通过 !(current_delegate is Func<bool>)
识别对象来执行此操作.
最高抽象低于Predicate<T>
是MulticastDelegate
,这似乎没有帮助(需要在 Predicate
下输入非通用 Predicate<T>
类型),并且识别通用参数的存在也没有用,因为另一个通用 Delegate
s 可能出现在列表中。
我唯一考虑过的另一件事是检查 Name
的 Type
.对我来说,字符串比较几乎是一种气味,但也许这是最好的和/或唯一的方法——你告诉我。
确定 object
的最佳方法是什么?是任何 Predicate<T>
不知道 T
的类型?
最佳答案
像这样:
obj.GetType().GetGenericTypeDefinition() == typeof(Predicate<>)
关于c# - 确定对象是否是任何 Predicate<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320149/