2013-10-04 1 views
3

Ок - Я столкнулся с проблемой, с которой мне сложно решать проблемы.Наследование формы C# - Функция в родительской форме должна вызывать переопределенную функцию в дочернем элементе

У меня есть две формы - одна наследуется от другой. Мы будем называть их FormParent и FormChild.

MyFunction() определен в FormParent. Мне не нужно переопределять его, поскольку он будет делать одну и ту же основную вещь для множества разных форм, но он вызывает DoSomethingUnique(). DoSomethingUnique определяется родителем и переопределяется в дочернем элементе.

Моя проблема в том, что, поскольку я не переопределяю MyFunction(), когда я вызываю его из FormChild, то версия DoSomethingUnique(), которую он вызывает, является функцией FormParent, а не FormChild.

Есть ли способ избежать переопределения обеих функций, но есть версия DoSomethingUnique(), которая называется версией из FormChild?

+5

Ситуация, которую вы описываете, звучит не правильно. Если 'MyFunction()' вызывает 'DoSomethingUnique()' и 'DoSomethingUnique()' переопределяется, то следует вызвать переопределенную версию. Пожалуйста, покажите нам какой-нибудь фактический код или аналогичный пример вашего фактического кода. – JLRishe

+0

Вам не нужно вызывать 'override' с' virtual'? Возможно, мне что-то не хватает ... – Brian

+1

@Brian Да, вы знаете, но user2848780 сказал, что он/она переопределяет метод. Конечно, мы не будем точно знать, в чем ситуация, если мы не увидим код. – JLRishe

ответ

1

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

В FormParent ..

virtual public void DoSomethingUnique() 

В FormChild

override public void DoSomethingUnique() 

Если вы явно не изменить метод с override тогда будет вызывать метод в FormParent.

Очевидно, заменить void на ваш тип возврата.

+0

Спасибо, что сделал именно то, что мне было нужно! – user2847870

Смежные вопросы