代码之家  ›  专栏  ›  技术社区  ›  Flapper

基类扩展的Visual Studio 2010编译器错误

  •  3
  • Flapper  · 技术社区  · 14 年前

    我有一个c#类,它提供了一些简单的类和一些基类扩展,比如这个。。

    public static Boolean ToBooleanOrDefault(this String s, Boolean Default)
    {
        return ToBooleanOrDefault((Object)s, Default);
    }
    
    
    public static Boolean ToBooleanOrDefault(this Object o, Boolean Default)
    {
        Boolean ReturnVal = Default;
        try
        {
            if (o != null)
            {
                switch (o.ToString().ToLower())
                {
                    case "yes":
                    case "true":
                    case "ok":
                    case "y":
                        ReturnVal = true;
                        break;
                    case "no":
                    case "false":
                    case "n":
                        ReturnVal = false;
                        break;
                    default:
                        ReturnVal = Boolean.Parse(o.ToString());
                        break;
                }
            }
        }
        catch
        {
        }
        return ReturnVal;
    }
    

    Error   28  'string' does not contain a definition for 'ToBooleanOrDefault'
    

    3 回复  |  直到 14 年前
        1
  •  1
  •   Panagiotis Kanavos    14 年前

    除了常见的错误(忘记包含扩展类的名称空间),您应该确保两个项目使用相同的.NET版本。有时,v4项目不会正确引用为早期版本的框架构建的程序集

    总是让我抓狂

        2
  •  1
  •   Abel    14 年前

    迁移后,生成了一个报告,可能带有需要手动修复的某些内容的警告。您可以尝试删除引用并等待IntelliSense识别它(引用类的每次使用下面都有红线)。然后再次添加引用,看看它现在是否编译。

    请注意,这与基类无关,而是与找不到扩展方法有关。您可能还需要检查项目的.NET版本(.NET 3.5或更高版本支持扩展方法),并检查引发错误的行:确保using语句可用。

        3
  •  0
  •   Flapper    14 年前