在派生类中烦人的重复

时间:2008-12-03 15:15:11

标签: .net asp.net oop

在我们从FormBaseControl派生的每种形式中,我们都有以下代码。我确信有一个更好的方法来输入控制器对象,但目前我们已经将它包含在每个页面中。在下面的示例中,base.Controller的类型为BaseControllerExportController派生自FormBaseControl。我发现 private ExportController MyController { get { return base.Controller as ExportController; } } protected void Page_Load(object sender, EventArgs e) { base.Controller = new ExportController(WebNavigator.Current); 的每个派生中都有这个代码的重复,以便闻不到它,但我无法找到一种正确的方法。

{{1}}

2 个答案:

答案 0 :(得分:1)

你能否使用通用类来解决这个问题?

即。而不是:

 private ExportController MyController
 {
        get { return base.Controller as ExportController; }
 }

在派生类中。

把:

 protected T MyController
 {
        get { return this as T; }
 }

在基类中,并将基类转换为泛型类BaseController<T>

答案 1 :(得分:0)

我认为这里存在设计问题。

你确定MyController需要是ExportControler(或任何其他)而不是基础(或派生类)吗?可以使用中间类,接口或泛型来避免这种情况吗?

请详细说明为什么一直需要重新安装MyControler。