[英]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.