Должен ли я вызвать реализацию базового класса при переопределении метода в C # для ASP.NET? - PullRequest
6 голосов
/ 10 июля 2009

Я понимаю, что переопределение метода / функции переопределяет его реализацию в производном классе от его реализации в базовом классе.

Что меня смущает, так это то, что если я переопределяю класс в 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*/                    
}

Ответы [ 5 ]

11 голосов
/ 10 июля 2009

Это зависит от вас. Как правило, вы хотите вызвать метод базового класса, потому что он может делать много вещей, к которым вы не причастны (особенно в классе, который вы не контролируете ... получаете? Контроль.) Но, если вы очень уверены, что вы не нужно (или не нужно), чтобы «базовые классы» происходили, вы можете удалить вызов.

3 голосов
/ 10 июля 2009

Это просто вопрос того, хотите ли вы полностью заменить поведение или добавить поведение.

Для чего-то вроде CreateChildControls вы, вероятно, сохраните вызов базового класса.

1 голос
/ 10 июля 2009

это зависит от того, что вы хотите сделать. Если вы хотите, чтобы метод base.CreateChildControls () был вызван, а затем вы хотите выполнить какое-то пользовательское действие до или после вызова метода, то вы можете сделать это.

Если вы хотите иметь полный контроль над тем, что происходит, когда вызывается CreateChildControls, то вы можете просто полностью игнорировать его вызов.

Тот факт, что он находится там по умолчанию, является лишь небольшим руководством для вас.

0 голосов
/ 21 августа 2014

Возможно, вы захотите взглянуть на шаблон шаблон . Хотя вы ничего не можете сделать с реализацией классов библиотеки, это может помочь вам гарантировать, что написанный код прост в использовании.

0 голосов
/ 10 июля 2009

Зависит от того, хотите ли вы заменить или завершить базовую реализацию ... в большинстве случаев вам следует вызывать базовую реализацию (и вам определенно следует делать это в случае метод CreateChildItems ...)

...