拥有System.Type时比较类型

时间:2015-02-08 20:20:10

标签: c# .net oop

我有以下代表:

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

1 个答案:

答案 0 :(得分:1)

你可以做简单的比较:

candidate.GetType() == target;

它将检查canditate是否与target中指定的类型完全相同。 如果要包含子类/接口,可以编写:

target.IsAssignableFrom(candidate.GetType());

它的工作方式与is关键字类似,但在Type类上运行,而非具体实例。

您还应该检查candidate是否为空 - 在这种情况下,GetType会抛出NullReferenceException例外。