检查class是否是使用变量的类型?

时间:2013-09-25 16:09:22

标签: c#

我试图看看是否可以在比较中使用变量中的System.Type。我有以下代码:

    internal ObservableCollection<FREQUENCY> GetFrequencies(System.Type equipmenttype)
    {
        ... 
        foreach (var incident in query)
        {

            if (typeof(equipmenttype).IsSubclassOf(typeof(incident)))
            {
                foreach (var freq in incident.FREQUENCY)
                {
                    freqs.Add(freq);
                }
            }
        }
        return freqs;
    }

但变量'tmp'和'equipmenttype'会导致错误“找不到类型或命名空间名称'tmp'(你是否缺少using指令或程序集引用?)”

我明白通常会通过说typeof(MYCLASS)来使用它,但我很好奇是否可以使用System.Type的变量,或者有任何方法可以做到这一点。感谢。

2 个答案:

答案 0 :(得分:4)

我无法看到代码中tmp的位置。但你肯定错过了这个

if (typeof(equipmenttype).IsSubclassOf(typeof(incident)))

应该是

if (equipmenttype.IsSubclassOf(incident.GetType()))

typeof运算符用于获取Type的RuntimeType。但是你已经RuntimeTypeequipmenttype了,所以你不需要在这里使用typeof

答案 1 :(得分:2)

试试if (equipmenttype.IsSubclassOf(incident.GetType())equipmenttype已经是System.Type,必须调用GetType()来确定实例的类型。