写一个公共的class,将这些属性和方法以 static的形式编码

解决方案 »

  1.   

    DeliverGuy(送外卖的): 你说的方法叫做辅助类解决,可是这样面临的很大量的赋值.
      

  2.   

    define a new Class like 
    class MyExtend
    {
     //一样的属性和方法
     protected Property1;
     .
     .
     .
     protected PropertyX; protected method1;
     .
     .
     .
     protected methodX;}
    class MyPage : System.Web.UI.Page
    {
       MyExtend m_myExtend;
       //其他代码
    }
    class MyUC
    {
       MyExtend m_myExtend;
      //其他代码
    }
      

  3.   

    duwei() :class MyPage : System.Web.UI.Page
    {
       MyExtend m_myExtend;
       //其他代码
    }m_myExtend需要调用MyPage和MyUC中的大量的方法和属性, 
    这样面临的很大量的赋值.
      

  4.   

    定义接口,,实现一个再用ctrl+c  ,ctrl+v 不就好了
      

  5.   

    lgg06(随风):
    那,我在MyPage, MyUC都要加入相同的代码,此乃下策.
      

  6.   

    class MyExtend
    {
        MyExtend(System.Web.UI ui)
        {
           m_myPage = ui as MyPage;
           if (m_myPage == null)
           {
              m_myUC = ui as MyUC;
              m_isPage = false;
           }
           else 
           {
              m_isPage = true;
           }
        }    private MyPage m_myPage;
        private MyUC m_myUC;
        private bool m_isPage;    public void MyFuction(int dkd)
        {
           if (m_isPage)
           {
               m_myPage.function1();
               m_myPage.function2(dkd);
               ........
           }
           else
           {
               m_myUC.functionx();
           }
        }
    }Actually, It looks a little bit ugly. If you like, you can define a new interface which 
    MyUC and MyPage will implement it. Then use the interface in MyExtend instead of the class.Cheers
      

  7.   

    写一个 basepage 它继承自 System.Web.UI.Page
    把共有的属性和方法写进取
    然后其它类继承它
    这样不知行不行
      

  8.   

    stonegoldaustin(特纯中南海):
    你说的包含是个思路, 问题在于MyPage、MyUC包含了MyCommon类, MyCommon.method将无法使用到MyPage、MyUC的饿属性和方法,如:MyCommon.method(System.Web.UI.Control p_ctrl),System.Web.UI.Control是MyPage、MyUC的共同基类, 这样只可以用到System.Web.UI.Control中的属性和方法,而我定义的MyPage,MyUC共同的属性和方法就没法使用了。
      

  9.   

    没有最好的只有更好的,这类问题只有支持多继承的语言才是最佳解决
    现在你可以:
    定义一个类myBase,包含所有公用属性和方法
    在你的MyPage(页面基础类)和MyUC(控件基础类)中使用相同的一个接口,实现一个属性,这个属性返回myBase
    如此,接口规范了实现,不复用的只有这个属性,但这个属性使你复用了所有myBase
      

  10.   

    alias88() 所说的方法, 其实, 使用包含,即在MyPage和MyUC中都包含一个myBase属性都可以达到效果,而不用再引入接口.alias88()的方法不错.
      

  11.   

    综合大家所言, 对于在MyPage, MyUC上的继承问题, 如果做了接口或者包含, 那么在它们的派生类中,无法重写共享的属性和方法啊.