我有以下代表:
Action<string, object, Type> IsA =
(name, candidate, target) =>
{
Write("Is " + name + " a " + target.Name + "? " + (candidate.GetType() is target));
};
应该返回候选IS-A目标。但是,target现在是System.Type的变量。
我怎么能说candidate
IS-A target
?
答案 0 :(得分:1)
你可以做简单的比较:
candidate.GetType() == target;
它将检查canditate是否与target
中指定的类型完全相同。
如果要包含子类/接口,可以编写:
target.IsAssignableFrom(candidate.GetType());
它的工作方式与is
关键字类似,但在Type
类上运行,而非具体实例。
您还应该检查candidate
是否为空 - 在这种情况下,GetType
会抛出NullReferenceException
例外。