Как узнать, переопределён ли метод оператором override - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как программным путём выяснить, был ли переопределён метод getName() в классе Cat1? Пример кода:
using System;
class Animal
{
    public Animal(string name)
    {
        this.name = name;
    }
 
    public virtual string getName()
    {
        return name;    
    }                            
 
    private string name;
 
}
 
class Cat1 : Animal
{
    public Cat1(string name) : base(name){}
    public override string getName()
    {
        return "Cat1: " + base.getName();
    }
}
 
class Cat2: Animal
{
    public Cat2(string name) : base(name){}
 
    new string getName()
    {
        return "Cat2: " + base.getName();
    }
 
}

class Animals
{
    public static void Main()
    {
        Cat1 myCat1= new Cat1("Bars");
        Cat2 myCat2= new Cat2("Soha");
 
        Animal[] homeCats = new Animal[2];
        homeCats [0] = myCat1;
        homeCats [1] = myCat2;

        foreach(Animal animal in homeCats )
        {
            if (если animal.getName() является переопределённым/override ) Действие1;
            else Действие2;
 
        }
    }
}

Решение задачи: «Как узнать, переопределён ли метод оператором override»

textual
Листинг программы
foreach (Animal animal in homeCats)
{
        Type objType = animal.GetType();
        if (objType.GetMethod("getName").DeclaringType == objType)
               Console.WriteLine("Method getName overriden");
        else
               Console.WriteLine("Method getName hasn't been overriden");
 
        if (objType.GetMethod("getName2").DeclaringType == objType)
               Console.WriteLine("Method getName2 overriden");
        else
        Console.WriteLine("Method getName2 hasn't been overriden");
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы