Cle*_*ton 33 .net c# asp.net-mvc .net-3.5
在新文件夹中,使用扩展方法创建一个类.例如:
static public class BugMVCExtension
{
public static int ToInt(this string str)
{
return Convert.ToInt32(str);
}
}
Run Code Online (Sandbox Code Playgroud)选择一个视图并尝试使用这个新的扩展方法
你会得到这个例外:
CS0121: The call is ambiguous between the following methods or properties:
'*MvcApplication1.App_code.BugMVCExtentions.ToInt(string)*' and
'*MvcApplication1.App_code.BugMVCExtentions.ToInt(string)*'
Run Code Online (Sandbox Code Playgroud)
这里有人有关于它的更多信息吗?在ASP.NET MVC(?)Web应用程序中创建App_code是错误的吗?
Meh*_*ari 47
在Visual Studio中创建的MVC项目默认使用Web应用程序项目模型.App_Code主要用于网站模型.我建议阅读它们之间的差异(另一个问题涵盖了这一点,并且它也在MSDN上广泛讨论).如果App_Code在Web应用程序项目中添加源文件,Visual Studio会将其编译为DLL(因为它包含在项目中)并将其放入/bin.在运行时,ASP.NET编译器会查看App_Code并尝试在不同的程序集中编译源代码.因此,两个不同的程序集中将存在两个具有相同名称的单独类,当ASP.NET解析器尝试编译该.aspx文件时,它将无法选择一个.
这两个(扩展方法和您要实例化的类)是否在一个.cs文件中?否则,你实例化的类可能是一个源文件,其中Build Action(右键单击文件,单击属性)设置为Content,告诉Visual Studio在构建过程中跳过它(在这种情况下,你不会能够在外面的其他.cs文件中引用它,App_Code但你可以在视图中使用它,因为它只会在运行时生效.)如果构建操作是编译,你将得到一个错误.问题绝对不是扩展方法所特有的.对于添加的源文件,Visual Studio似乎足够聪明,可以将其设置为Content App_Code.
| 归档时间: |
|
| 查看次数: |
40846 次 |
| 最近记录: |