在我们从FormBaseControl
派生的每种形式中,我们都有以下代码。我确信有一个更好的方法来输入控制器对象,但目前我们已经将它包含在每个页面中。在下面的示例中,base.Controller
的类型为BaseController
,ExportController
派生自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}}
答案 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。