我正试图找到以下的替代方案,以便我可以利用is
运算符。有没有办法将参数传递给is运算符?
public bool IsOfType(Type type)
{
return this._item.GetType() == type;
}
类似下面的内容,它不会编译。
public bool IsOfType(Type type)
{
return this._item is type;
}
我正试图找到以下的替代方案,以便我可以利用is
运算符。有没有办法将参数传递给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
这使得非通用方法OD简单:
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; }
我忘记了Type.IsInstanceOf。卫生署!将编辑我的答案与一个完整的例子... –
它实际上被称为'IsInstanceOfType',不只是'IsInstanceOf'。 –
你打我吧;) –
刚想发布仿制药替代...为什么我不得不看到更新的答案吗? :) –
我总是不喜欢InstanceOf的语法,为了避免它,几乎值得在'object'上使用这个扩展方法。 – demoncodemonkey