无法识别传递类型

时间:2012-06-29 01:53:56

标签: c# function object types

我收到了错误

  

“找不到类型或命名空间名称'passedType'(您是否缺少using指令或程序集引用?)”

对函数内部的passType的两个引用。为什么它不能识别“passedType”变量?

public bool ObjectIsInHighlightedList(object thing, Type passedType)
{
  foreach (object obj in _highlightedList)
  {
     if (obj is passedType && thing == (passedType)obj)
        return true;
  }
} 

1 个答案:

答案 0 :(得分:1)

尝试使用IsAssignableFrom方法。

public bool ObjectIsInHighlightedList(object thing, Type passedType)
{
  foreach (object obj in _highlightedList)
  {
     if (passedType.IsAssignableFrom(obj.GetType()) && (object)thing == obj)
        return true;
  }
}

这对于通用方法来说实际上是一个很好的场景,但是:

public bool ObjectIsInHighlightedList<T>(object thing)
{
  foreach (object obj in _highlightedList)
  {
     if (obj is T && thing == (T)obj)
        return true;
  }
}