Расширение метода базового класса

Я новичок в C # и пытаюсь понять основные концепции. Спасибо заранее за вашу помощь. У меня есть несколько примеров классов ниже (введенных в этом окне, поэтому могут быть некоторые ошибки), и у меня есть два вопроса:

  1. Можно ли вызвать метод производного класса, который выполняет код в методе базового класса с тем же именем, а затем выполняет код в методе производного класса? Каждый производный класс должен будет выполнить код базового класса для RunCheck, а затем выполнить специализированный код, специфичный для этого класса. Я мог бы назвать RunCheck () чем-нибудь еще в базовом классе, а затем вызвать его, когда я вызываю RunCheck () производного класса, но тогда я должен не забыть вызывать его в RunCheck () в производном классе.

  2. В the Program.cs Я хочу вывести все поля с пустым значением, если оно находится в поле, не входящем в производный класс, в который я передаю. Что мне передать?

Вот мой код:

  class baseCheck
  {
      public DateTime StartTime { get; set; }
      public DateTime LastRun { get; set; }
      public int Runs { get; set; }
      //Others

      public void RunCheck()
      {
         if (Started != null)
           started = DateTime.Now;

         LastRun = DateTime.Now;

         Runs++;
      }
    }

    class FileCheck : baseCheck
    {
       public string FileName { get; set; }

       public void RunCheck()
       {
           //I want all the code in the base class to run plus
           //any code I put here when calling this class method

        }
    }
    class DirectoryCheck : baseCheck
    {
       public string DirectoryName { get; set; }

       public void RunCheck()
       {
           //I want all the code in the base class to run plus
           //any code I put here when calling this class method

        }
    }

        //Program.cs
        static void Main()
        {
           //Create derived class - either DirectoryCheck or FileCheck
           //depending on what the user chooses.

            if (Console.ReadLine()=="F")
            {
                FileCheck c = new FileCheck();  
            }
            else
            {
                DirectoryCheck c = new DirectoryCheck();
            }

            PrintOutput(c);

        }
        private void PrintOut(What do I put here?)
        {
           Console.WriteLine("Started: {0}",f.StartTime)
           Console.WriteLine("Directory: {0}", f.DirectoryName)
           Console.WriteLine("File: {0}", f.FileName}
        }
15
задан Cody Gray 23 March 2011 в 03:48
поделиться