Как узнать, переопределён ли метод оператором 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"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д