【问题标题】:Failure to recognize passed type未能识别通过的类型
【发布时间】:2012-06-30 14:13:01
【问题描述】:

我收到错误提示

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

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

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

【问题讨论】:

  • passedType 是 Type 类型。所以你的 obj 对象应该被转换为 Type。
  • 你总是静态知道passedType吗?如果是这样,你应该把这个方法改成泛型方法,然后你可以测试obj is T

标签: c# function object types


【解决方案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;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多