gpt4 book ai didi

c# - 以下方法或属性之间的调用不明确(错误??)

转载 作者:IT王子 更新时间:2023-10-29 04:06:14 26 4
gpt4 key购买 nike

  1. 创建一个新的 ASP.NET MVC 网站应用
  2. 创建 ASP.NET App_Code 文件夹
  3. 在新的内部文件夹,创建一个类扩展方法。例如:

    static public class BugMVCExtension
    {
    public static int ToInt(this string str)
    {
    return Convert.ToInt32(str);
    }
    }
  4. 选择一个 View 并尝试使用这个新的扩展方法

你会得到这个异常:

CS0121: The call is ambiguous between the following methods or properties:
'*MvcApplication1.App_code.BugMVCExtentions.ToInt(string)*' and
'*MvcApplication1.App_code.BugMVCExtentions.ToInt(string)*'

这里有人有更多相关信息吗?在 ASP.NET MVC(?) Web 应用程序中创建 App_code 是错误的吗?

最佳答案

在 Visual Studio 中创建的 MVC 项目默认使用 Web 应用程序项目模型。 App_Code 主要用于网站模型。我建议阅读它们之间的差异(another question covers this 并且在 MSDN 上也有广泛介绍)。如果在 Web 应用程序项目中将源文件添加到 App_Code,Visual Studio 会将其编译为 DLL(因为它包含在项目中)并将其放入 /bin .在运行时,ASP.NET 编译器会看到 App_Code 并尝试在不同的程序集中编译源代码。因此,两个不同的程序集中将存在两个具有相同名称的独立类,当 ASP.NET 解析器尝试编译 .aspx 文件时,它将无法选择一个。

更新:

这两个(扩展方法和您正在实例化的类)是否在一个 .cs 文件中?否则,您正在实例化的类可能位于源文件中,Build Action(右键单击文件,单击属性)设置为 Content,这会告诉 Visual Studio 跳过它在构建过程中(在这种情况下,您将无法在 App_Code 之外的其他 .cs 文件中引用它,但您可以在 View 中使用它,因为它'只会在运行时生效。)如果构建操作是编译,您将得到一个错误。这个问题绝对不是扩展方法特有的。对于添加到 App_Code 的源文件,Visual Studio 似乎足够聪明,默认将其设置为 Content。

关于c# - 以下方法或属性之间的调用不明确(错误??),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com