代码之家  ›  专栏  ›  技术社区  ›  Arseni Mourzenko

如何在页面和母版页之间共享代码而不进行多重继承/代码重复?

  •  1
  • Arseni Mourzenko  · 技术社区  · 14 年前

    我读过 questions/answers 解释说 C中没有多重继承# 我们甚至不需要它,它会造成太多的问题。

    现在,我正在做一个项目,在这个项目中,我真的不知道如何在没有多个继承的情况下做事情,而不复制代码。

    情况就是这样。有一个网站的主页和其他网页继承自母版页(主页不继承自)。页面和母版页都在执行一些操作:自定义登录、统计、加载用户自定义设置等。目前,解决方案很糟糕,因为 这些任务的源代码只复制了两次 .

    主页类继承自 Page . 另一方面,母版页继承自 Masterpage . 从逻辑上讲,从一个公共类继承也是很好的,但是它是多重继承,所以这是不可能的。

    那么该怎么办呢?

    我想了好几种方法,但不喜欢:

    • 创建一个 将从page/masterpage类调用的独立类 . 例如,不是写 bool isDisplayingTips = this.CurrentUser.IsDisplayingTips 我会写 bool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips . 我不喜欢它,因为它写的时间更长。

    • 创造一个“真实的”,空的, 通用母版页 ,并从中继承主页和母版页。它不仅需要编写更多的代码来访问masterpage参数,而且还需要降低速度,每个请求都需要一个额外的masterpage。

    有什么想法吗?

    4 回复  |  直到 14 年前
        1
  •  8
  •   VinayC    14 年前

    1. myBasePage = (BasePage)this.Page;
        2
  •  1
  •   Dan Dumitru    14 年前

    MasterPageBase System.Web.UI.MasterPage

        3
  •  1
  •   Andrea Parodi    14 年前

    public bool IsDisplayingTips(){
        return CurrentUser.IsDisplayingTips;
    }
    

    bool isDisplayingTips = this.SharedObjects.IsDisplayingTips()
    
        4
  •  1
  •   eglasius    14 年前