2013-04-25 4 views
-5

У меня есть требование, где у меня есть класс и функцияКак переопределить функцию без переопределения в C#?

public class BaseClass 
     { 
      public virtual int MyMethod(int n) 
      { 
       Console.WriteLine("BaseClass=" + n + "+" + 2); 
       return n + 2; 
      } 
     } 

и производный класс б где я расширение функции базового класса

public class A : BaseClass 
     { 
      public override int MyMethod(int n) 
      { 
       Console.WriteLine("Class A=" + n+"*"+2); 
       return n*2; 
      } 
     } 

В производном классе, когда я называю функция A.MyMethod() должна выполняться базовая функция, за которой следует производная функция класса.

static void Main(string[] args) 
     { 

      A classA = new A(); 
      A.MyMethod(1); 

      Console.ReadKey(); 
     } 

Возможно ли это?

+4

Необходимо в соответствии с вашими требованиями быть более четкими. Это не помогает, если ваш исходный код не компилируется. –

+0

Пожалуйста, ознакомьтесь с обновленным кодом. –

+2

Это еще не скомпилировано - вместо этого вы должны вызвать 'classA.MyMethod'. И если вы хотите сначала вызвать метод базового класса, просто сделайте так: 'A.MyMethod' выполните это - начните реализацию с' base.MyMethod (n) '. –

ответ

0

Вы имеете в виду, что хотите вызвать базовый конструктор из производного конструктора? Да, вы можете сделать это с помощью конструкции base().

public Derived(int sides) 
    : base(sides) 

Когда площадь() на самом деле не является конструктором (это в вашем вопросе, тип возвращаемого или недействительным), а метод, вы можете сделать это следующим образом:

public override returntype Foo(...) 
{ 
    // your adaptation 
    base.Foo(...) 

Метод в базовом классе должен быть виртуальным, чтобы это работало.

0
class b: a 
{ 
    public new int Square(int n) 
    { 
     var baseResult = base.Square(n); 
     var i = 0//extenting the code 
     return i; 
    } 
} 
Смежные вопросы