繁体   English   中英

在C#中为ASP.NET覆盖方法时,应该调用基类实现吗?

[英]Should I call the base class implementation when overriding a method in C# for ASP.NET?

我知道重写方法/函数会从其在基类中的实现重新定义其在派生类中的实现。

现在让我感到困惑的是,如果我在ASP.NET中重写了一个类,例如CreateChildControls() (我无缘无故地随机选择了它),VS2008会自动生成:

protected override void CreateChildControls()
{
   base.CreateChildControls();
}

足够好了,默认实现只是调用基类的CreateChildControls()

因此,如果我想运行一些代码,由于我不知道base.CreateChildControls() ,我应该这样做:

protected override void CreateChildControls()
{
   /*My Code Here*/                    
   base.CreateChildControls();
}

或者,完全忽略base.CreateChildControls()

protected override void CreateChildControls()
{
   /*My Code Here*/                    
}

随你(由你决定。 通常,您希望调用基类方法,因为它可能会执行很多您不了解的事情(尤其是在您无法控制的类中。得到它吗?控制。)但是,如果您非常有信心,不需要(或不想)基类“东西”发生,您可以删除该调用。

这只是您要完全替换行为还是添加行为的问题。

对于诸如CreateChildControls之类的东西,您可能会保留对基类的调用。

这取决于您想做什么。 如果要调用base.CreateChildControls()方法,然后要在调用该方法之前或之后执行一些自定义操作,则可以这样做。

如果要完全控制调用CreateChildControls时发生的情况,则可以完全忽略调用它。

默认情况下它存在于其中只是为您提供了一些指导。

这取决于您是否要替换完成基本实现...在大多数情况下,您应该调用基本实现(对于CreateChildItems方法,您肯定应该执行此操作...)

您可能需要看一下模板方法模式。 尽管您对库类的实现方式无法做任何事情,但这可能有助于您确保编写的代码易于正确使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM