我正在尝试找到以下替代方案,以便我可以利用is
运营商。
public bool IsOfType(Type type)
{
return this._item.GetType() == type;
}
类似于以下内容,无法编译。
public bool IsOfType(Type type)
{
return this._item is type;
}
我想你正在寻找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);
}
您可以根据上下文执行多项操作:
Type.IsAssignableFrom(Type)
您只有两个类型实例,请使用。Type.IsInstanceOf(object instance)
如果您有权访问要比较的实例,请使用。使用泛型,例如:
public bool IsOfType<T>() { return this._item is T; }