Jay*_*Jay 8 .net c# reflection delegates types
我有一个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.对我来说,字符串比较是近乎嗅觉,但也许这是最好的和/或唯一的方式 - 你告诉我.
什么是在不知道类型的情况下明确确定a object是什么的最佳方法?Predicate<T>T
像这样:
obj.GetType().GetGenericTypeDefinition() == typeof(Predicate<>)
Run Code Online (Sandbox Code Playgroud)