C# 继承问题
再说一次,我对这类事情相当陌生,也许错误信息告诉我它是什么,我只是不理解,但是。。。此代码位于anon.cs中C# 继承问题,c#,asp.net,.net,inheritance,C#,Asp.net,.net,Inheritance,再说一次,我对这类事情相当陌生,也许错误信息告诉我它是什么,我只是不理解,但是。。。此代码位于anon.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 {
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>
到
我得到这个错误:
编译器错误消息:CS0246:找不到类型或命名空间名称“Page”(是否缺少using指令或程序集引用?)
如果我将其从公共类CasLogin:System.Web.UI.Page更改为
公共类CasLogin:Page
我收到这个错误
对于页面类(System.Web.UI
),您缺少正确的using
语句,因此,当您删除完整限定时,编译器将无法再找到页面
类
您还应该在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" %>
应该是:
public partial class CasLogin : System.Web.UI.Page
这告诉编译器,CasLogin
类是在多个文件中定义的(web表单就是这样;设计器文件与代码隐藏文件是分开的)
如果仍然不起作用,我建议重新创建页面并将任何相关代码复制到其中通常VisualStudio会自动处理所有这些问题,这不是问题。我很确定应该是这样
<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>
在不完全限定类名的情况下,它不知道您所说的是哪一页,因此您可以在声明类时显式声明,也可以使用using语句。第一个错误是相同的问题,它在chees.pies.org名称空间中看不到CasLogin类
Inherits="cheese.pies.org.CasLogin"
看看我自己的小测试项目/代码,我看到了一些明显不同的东西:“usings”出现在名称空间声明之前,而分部类的使用则出现在代码后面。另外,请注意,Inherits具有完全限定的类(包括命名空间)
在Default.aspx中
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
同样,错误会准确地告诉您出了什么问题:您是否缺少using指令或程序集引用答案是肯定的。在cheese.pies.org名称空间中确实有这两个名称,对吗?确保这些文件的所有名称空间都相同。此外,如果类使用代码隐藏,请确保将其定义为分部。e、 g.公共部分类\u默认值:System.Web.UI.page在anon.cs上包含此(使用System.Web.UI;
)不会更改错误,很遗憾。另外,如果您在上面查看,则使用System.Web。Page不在System.Web
中,它在System.Web.UI
中。实际上,错误变为ASPNET:确保此代码文件中定义的类与“inherits”属性匹配,并且它扩展了正确的基类(例如Page或UserControl).
查看我的更新和其他答案;您还需要在Page指令中完全限定基类名称
并将页面指令更改为
,出现新错误。嗯,有点老了。它现在对我大喊大叫说编译器错误消息:CS0260:cheese.pies.org.CasLogin类型声明中缺少部分修饰符;存在此类型的另一个部分声明
。usings/namespace的顺序无关紧要,但其他项的顺序是正确的。
<% @Page Language="C#" Inherits="cheese.pies.org.CasLogin" CodeFile="CasLogin.cs" %>
using System.Web.UI;
public class CasLogin : Page
Inherits="cheese.pies.org.CasLogin"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
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
{