我正在尝试找到以下内容的替代方法,以便我可以利用is
运算符。
public bool IsOfType(Type type)
{
return this._item.GetType() == type;
}
类似于以下内容,不能编译。
public bool IsOfType(Type type)
{
return this._item is type;
}
答案 0 :(得分:28)
我认为您正在寻找Type.IsAssignableFrom
:
public bool IsOfType(Type type)
{
return _item != null && type.IsAssignableFrom(_item.GetType());
}
或者,如果您可以使方法通用,那么可以使用带有类型参数的is
更简单:
public bool IsOfType<T>()
{
return _item is T;
}
编辑:正如Wim的回答所指出的,还有Type.IsInstanceOf
使得非泛型方法更简单:
public bool IsOfType(Type type)
{
return type.InstanceOf(_item);
}
答案 1 :(得分:12)
根据具体情况,你可以做多件事:
Type.IsAssignableFrom(Type)
。Type.IsInstanceOf(object instance)
。使用如下的泛型:
public bool IsOfType<T>() { return this._item is T; }