Могу ли я сделать что-то подобное? (Слишком упрощенный, потому что он слишком сложный)
abstract class A {
public string Print() {}
public static string DoPrint(A a, Type T) {
((T)a).Print(); // <-- This should call eg. A3.Print(), not A.Print()
}
}
class A1: A {
public new string Print() {}
}
class A2: A {
}
class A3: A {
public new string Print() {}
}
class Somewhere
{
A3 a3 = new A3();
a3.DoPrint();
}
У меня есть много классов (A1, A2, A3 и т. Д.), Которые наследуются от базового класса (A)
Я пытаюсь создать функцию DoPrint () выше в классе А.
Можно ли это сделать?
Я пробовал это
public static string DoPrint(A a) {
a.Print();
}
но он вызывает A.Print (), а не A3.Print ()
РЕДАКТИРОВАТЬ: изменил заголовок с "Передать тип в качестве параметра?" потому что все были правы, я мог просто использовать виртуальный (спасибо!). Проблема заключалась в другом месте, не относящемся к этому вопросу.