本人是asp.net初学者。
很多人说asp.net不能多继承,所以就想写一个公共类。其他页面都继承这个类。BasePage页面
但有个问题
BasePage.cs页面这样
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace HIMS.Web.HIMS
{
public partial class BasePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
然后其他页面,比如Add.aspx页面
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using Maticsoft.Common;
using LTP.Accounts.Bus;
namespace HIMS.Web.HIMS.Hz_EmailMessageInfo
{
public partial class Add : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
这样写,但这里没有继承到BasePage,也转不到定义,反正不能用,没实现继承,不是说直接写类名就可以了吗?这里怎么也不行啊??抓狂啊!求指点,谢谢,有完整的例子吗?在网上找了都和我这个不一样,我这个有命名空间的。在这里为啥没继承到呢?求解!
------解决方案--------------------------------------------------------
要么两个类的namespace写成一样,要么写成public partial class Add : global::HIMS.Web.HIMS.BasePage
------解决方案--------------------------------------------------------
public partial class Add : HIMS.Web.HIMS.BasePage
------解决方案--------------------------------------------------------
如果是为了多继承的,推荐使用用户控件,假定有功能A、B、C,可以封装成3个用户控件。某个页面要实现哪些功能,只要拖入相应的用户控件即可。视情况写在用户控件的Page_Init(比如权限判断)或Page_Load方法里。
------解决方案--------------------------------------------------------
a_b_Base表示类的名字是a_b_Base,而a.b.Base表示类的名字是Base,这个类在a.b这个命名空间之下。类名中不能有点。
每一个类都属于某一个命名空间,应该不会默认没有命名空间的。
------解决方案--------------------------------------------------------
完全不要命名空间,试一下.
干吗那么复杂呢
------解决方案--------------------------------------------------------
namespace Hz_OAUI.OnlineAC.InternalBBS
类似的全不要了.
------解决方案--------------------------------------------------------
放在同一个命名空间下就行了,也就是说namespace一样
------解决方案--------------------------------------------------------
.net本身不支持多重继承,可以通过接口来间接实现~
- C# code
interface IFace1 { void Print(); void Hello(); } interface IFace2 { void Print(); void Goodbye(); } class FacetoFace : IFace1, IFace2 { #region IFace1 成员 void IFace1.Print() { System.Web.HttpContext.Current.Response.Write("这是IFace1的Print函数<br/>"); } public void Hello() { // TODO: 添加 FacetoFace.Hello 实现 System.Web.HttpContext.Current.Response.Write("IFace1 Say:Hello!<br/>"); } #endregion #region IFace2 成员 void IFace2.Print() { System.Web.HttpContext.Current.Response.Write("这是IFace2的Print函数<br/>"); } public void Goodbye() { // TODO: 添加 FacetoFace.Goodbye 实现 System.Web.HttpContext.Current.Response.Write("IFace2 Say:GoodBye<br/>"); } #endregion }
------解决方案--------------------------------------------------------