C# 继承问题
本文关键字:问题 继承 | 更新日期: 2023-09-27 18:32:47
再说一次,我对这种事情相当陌生,也许错误消息告诉我它是什么,我根本不明白,但是......这段代码是匿名的.cs
namespace cheese.pies.org
{
using System;
using System.IO;
using System.Net;
using System.Web;
using System.Xml;
public class CasLogin : System.Web.UI.Page
{
private const string CasHost = "notimportant";
public static string GetId()
{
}
}
当在这里引用时,最终给了我一个错误:
<% @Page Language="C#" Inherits="CasLogin" CodeFile="CasLogin.cs" %>
<script language="C#" runat="server">
protected void Page_Load(object sender, EventArgs e) {
String directoryId = CasLogin.GetId();
FormsAuthentication.RedirectFromLoginPage(directoryId, false);
}
</script>
错误在第一行,是:
编译器错误消息:ASPNET:确保此代码文件中定义的类与"inherits"属性匹配,并且它扩展了正确的基类(例如 Page 或 UserControl)。
如果我将其从
public class CasLogin : System.Web.UI.Page
自
public class CasLogin : Page
我收到此错误:
编译器错误消息:CS0246:找不到类型或命名空间名称"Page"(是否缺少 using 指令或程序集引用?
如果我将其从
public class CasLogin : System.Web.UI.Page
更改为public class CasLogin : Page
我收到此错误
您缺少Page
类(System.Web.UI
)的正确using
语句,因此当您删除完整限定时,编译器无法再找到Page
类。
您还应该在 Page 指令中完全限定类名,即 Inherits="cheese.pies.org.CasLogin"
好
<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>
坏
<% @Page Language="C#" Inherits="CasLogin" CodeFile="CasLogin.cs" %>
根据您对缺少partial
修饰符的评论:
public class CasLogin : System.Web.UI.Page
应该是:
public partial class CasLogin : System.Web.UI.Page
这告诉编译器CasLogin
类是在多个文件中定义的(Web 窗体就是这种情况;设计器文件与代码隐藏文件是分开的)。
如果它仍然不起作用,我建议重新创建页面并将任何相关代码复制到其中。通常Visual Studio会自动处理所有这些,这不是问题。
我很确定它应该是
<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>
对于您可以使用的其他错误
using System.Web.UI;
public class CasLogin : Page
如果不完全限定类名,它就不知道你在说哪个页面,所以你可以在声明类时明确,也可以使用 using 语句。 第一个错误是同样的问题,它看不到 chees.pies.org 命名空间内的 CasLogin 类
继承需要:
Inherits="cheese.pies.org.CasLogin"
看看我自己的小测试项目/代码,我看到了一些明显不同的东西:"usings"出现在命名空间声明之前,以及使用分部类来隐藏代码。另请注意,继承具有完全限定的类(包括命名空间)。
默认.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
默认.aspx.cs
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using System.Data;
namespace WebApplication2
{
public partial class _Default : System.Web.UI.Page
{