Есть ли официальное название для того, что я обрисовал в общих чертах ниже.Пример в C #, но предпосылка будет применяться к другим языкам.Я почти уверен, что сделал что-то подобное несколько лет назад в каком-то другом мире, но какой из них, или название концепции, ускользает от меня.динамическая диспетчеризация (в некотором роде) ??
Ключевой момент, который я пытаюсь донести, заключается в том, что во время выполнения определяется метод для выполнения и вызывается.Методы будут иметь практически одинаковую сигнатуру, отличающуюся только типом аргумента, и что все аргументы находятся в одном и том же дереве наследования.Я знаю, что есть некоторые детали, которые я пропустил, но я хочу, чтобы пример был простым.
string result;
User u;
User user = new User();
Manager manager = new Manager();
u = user;
result = _Print(u);
Console.WriteLine(result); // user...
u = manager;
result = _Print(u);
Console.WriteLine(result); // manager...
// interested in part
private static string _Print(User u)
{
return (u is Manager) ? Print((Manager)u) : Print(u);
}
// plumbing
private static string Print(User u)
{
return "User...";
}
private static string Print(Manager m)
{
return "Manager...";
}
class User { ... }
class Manager : User { ... }