确定对象是特定类型还是派生自特定类型
本文关键字:类型 派生 对象 | 更新日期: 2023-09-27 18:29:00
我正在寻找is
运算符,除了类型操作数(右侧)是动态的。
public static bool Is(this object value, Type type)
{
if (type == null) throw new ArgumentNullException(type, "type");
if (value == null) return false;
var valueType = value.GetType();
return valueType == type || valueType.IsSubclassOf(type)
|| valueType implements interface
}
有没有更简单的方法?
我试过使用IsAssignableFrom
,但似乎不起作用:
var x = "asdf";
Console.WriteLine(x.GetType().IsAssignableFrom(typeof(object)));
Console.WriteLine(x is object);
听起来你在寻找IsAssignableFrom
:
type.IsAssignableFrom(value.GetType())
是的,有更好的方法,你只需要扭转你的问题。与其询问valueType是否是类型的子类,不如检查类型是否可从valueType赋值。幸运的是,有一个调用可以做到这一点,请参阅IsAssignableFrom