Не могли бы вы объяснить мне. Как мне решить простую задачу ниже?C# Общее неявное ускорение экземпляра по типу
class Base{}
class Derived1: Base { void Method(); }
class Derived2: Base { void Method();}
static void Main(string[] args)
{
Base object; //it is just a declaring
if (some condition is true)
object = new Derived1();
else
object = new Derived2();
//now i want to call one of methods of one of my derived classes
//object.MyMethod(); //of course wrong, object has no that method
//ok, i have to downcast it but i don't know which class to
//((object.GetType())object).Method(); //wrong
//is there only one way is to repeat conditions
//and to downcast explicitly?
if (some condition is true again)
(object as Derived1).Method();
else
(object as Derived2).Method();
}
Базовый класс ничего не знает о методе(), конечно.
Если есть причина, чтобы извлечь из базового типа, т.е. Derived1 и Derived2 связаны, то либо абстрактные, либо виртуализировать ваш метод в базовом классе; то вам не нужно будет бросать. На данный момент это похоже на то, что вы пытаетесь сказать: «Если (x), то покупайте молоко, еще скажите собаке лаять». – series0ne