ASP.NET中用户控件和页面的公共基类

sal*_*e55 6 c# asp.net

现在我有一个继承的页面System.Web.UI.Page基类和继承的usercontrols的另一个基类System.Web.UI.UserControl,这些类包含相同的方法.由于C#不支持多重继承,因此我无法将这两个类合并为一个继承Page和UserControl的类.

将功能保留在两个基类中但是只在一个地方实现这些方法的最佳方法是什么?

我正在考虑创建一个接口,让两个基类调用包含接口实现的第三个类.有没有更好的方法,所以当我添加一个新方法时,我不必在三个地方做到这一点(即使实现仅在第三类).

Meh*_*ari 9

如果您使用的是C#3.0,则可以将辅助方法作为System.Web.UI.Control类的扩展方法提供,其中包括类System.Web.UI.PageSystem.Web.UI.UserControl类的派生方法.

public static class ControlExtensions {
    public static void DoSomething(this Control obj) {
       // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

PageUserControl:

this.DoSomething();
Run Code Online (Sandbox Code Playgroud)