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

Shi*_*mmy 2 c# comparison types

我正在寻找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
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法呢?

我尝试使用IsAssignableFrom,但似乎没有工作:

var x = "asdf";
Console.WriteLine(x.GetType().IsAssignableFrom(typeof(object)));
Console.WriteLine(x is object);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

听起来你正在寻找IsAssignableFrom:

type.IsAssignableFrom(value.GetType())
Run Code Online (Sandbox Code Playgroud)