簡體   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