我在这里有一个很酷的方法来检查一个类型是否是从另一个派生的。当我重构代码时,我得到了这个块GetBlah
。
public static bool IsOf(this Type child, Type parent)
{
var currentChild = child.GetBlah(parent);
while (currentChild != typeof(object))
{
if (parent == currentChild)
return true;
if(currentChild.GetInterfaces().Any(i => i.GetBlah(parent) == parent))
return true;
if (currentChild.BaseType == null)
return false;
currentChild = currentChild.BaseType.GetBlah(parent);
}
return false;
}
static Type GetBlah(this Type child, Type parent)
{
return child.IsGenericType && parent.IsGenericTypeDefinition
? child.GetGenericTypeDefinition()
: child;
}
我无法理解是什么GetBlah
,因此无法给它一个正确的名称。我的意思是我可以理解三元表达式和GetGenericTypeDefinition
函数,但我似乎没有在IsOf
方法中使用它,尤其parent
是正在传递的参数。有人可以阐明该GetBlah
方法实际返回的内容吗?
奖励:建议我为该方法取一个合适的名称:)