У меня есть следующая иерархия классов:
public class AI {
public AI() { }
public virtual void Update(float frameTime) { }
}
public class Boss : AI {
public Boss() : base() { }
public override void Update(float frameTime) {
Console.WriteLine("Boss Update");
}
}
У меня есть Персонаж, который содержит переменную ИИ, в которой я затем сохраняю экземпляр Boss и пытаюсь привести его в действие таким образом, чтобы получить функцию Обновления Босса, а не базового класса.
AI ai = new Boss();
(Boss)ai.Update(0f);
Это не работает, каков правильный метод сделать это в C #? Он правильно работал с другим ИИ-классом, где у меня даже не было для его приведения, он просто запустил нужную версию Обновления, поэтому я должен был что-то непреднамеренно изменить.