我试图看看是否可以在比较中使用变量中的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的变量,或者有任何方法可以做到这一点。感谢。
答案 0 :(得分:4)
我无法看到代码中tmp
的位置。但你肯定错过了这个
if (typeof(equipmenttype).IsSubclassOf(typeof(incident)))
应该是
if (equipmenttype.IsSubclassOf(incident.GetType()))
typeof
运算符用于获取Type的RuntimeType
。但是你已经RuntimeType
在equipmenttype
了,所以你不需要在这里使用typeof
。
答案 1 :(得分:2)
试试if (equipmenttype.IsSubclassOf(incident.GetType())
。 equipmenttype
已经是System.Type
,必须调用GetType()
来确定实例的类型。