确定对象是否来自特定类型?

时间:2012-03-25 01:36:12

标签: c# types comparison

我正在寻找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,但doesn't seem to be working

var x = "asdf";
Console.WriteLine(x.GetType().IsAssignableFrom(typeof(object)));
Console.WriteLine(x is object);

2 个答案:

答案 0 :(得分:5)

听起来你正在寻找IsAssignableFrom

type.IsAssignableFrom(value.GetType())

答案 1 :(得分:3)

是的,有更好的方法,你只需要扭转你的问题。而不是询问valueType是否是类型的子类,检查type是否可以从valueType分配。幸运的是,有人打电话要做到这一点,请参阅IsAssignableFrom