gpt4 book ai didi

c# - 尝试从 ASP.NET 中的 App_Code 文件夹中的另一个类派生时发生类型冲突

转载 作者:行者123 更新时间:2023-11-30 14:55:03 25 4
gpt4 key购买 nike

我有一个实现IRouteConstraint 接口(interface)的基类。我正在尝试扩展该类并覆盖基类中定义的 Match() 方法。这是针对使用 Visual Studio 2013 Update 2 的 ASP.NET MVC5 应用程序。

我的类(class)结构如下:

\Project\App_Code\BaseRouteConstraint.cs:

namespace Website {
public class BaseRouteConstraint: IRouteConstraint {
public virtual bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) {
...code
}
}
}

\Project\App_Code\DerivedRouteConstraint.cs:

namespace Website {
public class DerivedRouteConstraint: BaseRouteConstraint {
public override bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) {
if(!base.Match(httpContext, route, values, routeDirection) {
...code
}
}
}
}

但实际上我不能使用 DerivedRouteConstraint 类,因为 Visual Studio 说它不存在。我也收到此警告:

'Website.BaseRouteConstraint' in 'C:\Project\App_Code\BaseRouteConstraint.cs' conflicts with the imported type 'Website.BaseRouteConstraint' in 'C:\Project\'. Using the type defined in 'C:\Project\App_Code\BaseRouteConstraint.cs'

我已经检查过,我并没有意外地将我的基类的源代码文件复制到解决方案的其他任何地方。

最佳答案

我不知道 App_Code 文件夹不像普通文件夹那样工作。我认为这只是一个放置任何半随机类的地方,这些类不一定需要在项目结构中有自己的文件夹。当我写下这个问题时,我决定尝试将文件移动到另一个(正常)文件夹,然后一切都开始正常工作。

App_Code 文件夹具有特殊功能,其中的所有内容都被编译成 DLL 并自动引用到项目中。 MSDN 页面上的“应用程序代码”部分 Shared Code有关此文件夹的更多信息。这篇论坛帖子 ( http://forums.asp.net/t/1026147.aspx?+What+is+App_Code+Folder+for+ ) 让我知道代码实际上是 referenced 回项目,这对于理解错误很重要。

问题的根源在于我更改了类所在的 namespace ,因为我不希望它们位于 Website.App_Code namespace 中。因此,当 App_Code 文件夹中的文件被编译并自动引用到项目时,我在 Website 命名空间中为 BaseRouteConstraint 类定义了两个。 (一个来自引用 App_Code DLL,一个在代码本身。)

将命名空间改回 Website.App_Code 后,我还将文件的构建选项设置为 Compile 而不是 Content (基于这个问题:Classes residing in App_Code is not accessible)。但是,在这种情况下,我认为将文件移动到项目结构中它们自己的普通文件夹中更为合适。

关于c# - 尝试从 ASP.NET 中的 App_Code 文件夹中的另一个类派生时发生类型冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352556/

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