有没有一种方法可以将参数传递给Is运算符
本文关键字:参数传递 运算符 Is 方法 一种 有没有 | 更新日期: 2023-09-27 18:24:32
我正试图找到以下选项的替代方案,以便利用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; }