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)
听起来你正在寻找IsAssignableFrom:
type.IsAssignableFrom(value.GetType())
Run Code Online (Sandbox Code Playgroud)