C# 确定对象是特定类型还是从特定类型派生?

C# 确定对象是特定类型还是从特定类型派生?,c#,types,comparison,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 == ty

我正在寻找
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
,但它:


听起来你在寻找:


是的,有一个更好的方法,你只需要扭转你的问题。检查类型是否可从valueType赋值,而不是询问valueType是否是type的子类。幸运的是,有一个调用可以做到这一点,请参见有关您的更新的

:您使用错误,应该是
typeof(object)。IsAssignableFrom(x.GetType())
@BrokenGlass,请投票关闭而不是向下投票。ThanksI没有否决——而@Freed我指的是在question@Freed不管怎样,我错了。请投票结束这个问题,而不是直接投否决票。这应该删除。我认为这是一个很好的问题,有一个合适的答案。我已经“驯服”了文章的结尾,并将示例代码内联。
var x = "asdf";
Console.WriteLine(x.GetType().IsAssignableFrom(typeof(object)));
Console.WriteLine(x is object);
type.IsAssignableFrom(value.GetType())