日期:2014-05-17  浏览次数:20453 次

asp.net 公共方法继承
本人是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
    }

------解决方案--------------------
探讨

我就是想自己理解着简单创建一个能用的公共类。