【发布时间】:2013-09-12 07:04:14
【问题描述】:
假设我有以下课程:
public class General<T> { }
我想知道一个对象是否属于那种类型。
我知道我可以使用反射来确定对象是否属于Type.GetGenericTypeDefinition 的泛型类型,但我想避免这种情况。
是否可以执行obj is General<T> 或obj.GetType().IsAssignableFrom(typeof(General<T>)) 之类的操作?
我很惊讶我找不到类似的问题,尽管我可能在搜索中使用了错误的关键字。
【问题讨论】:
-
出于好奇,如果你有答案,你打算用它做什么?如果没有反思,您将无能为力,而您的问题要求避免反思。
-
我试图避免无用的反射,尽管它的运行时性能是 baaaaaad(就像一只羊 :))
-
@EZSlaver 为了满足我的 的好奇心,您是否有一个场景来证明问题出在哪里?关于反思缓慢的论点已经过去了,但我觉得它已经被污名化到了在任何解决方案中都避免迷信的地步。
-
你的班级不是
sealed。如果obj是运行时类型X,而X有基类General<int>怎么办? -
@JeppeStigNielsen,请改写你的问题。