В C++ я был в состоянии сделать этоC# виртуальные методы
class App
{
public:
virtual void OnMouseMove(etc);
void FunctionThatDoesStuff();
};
void App::FunctionThatDoesStuff()
{
// Engine stuff here
OnMouseMove(etc);
}
class ProjectName : public App
{
public:
void OnMouseMove(etc);
};
void ProjectName::OnMouseMove(etc)
{
// User stuff here
}
Затем, когда OnMouseMove был вызван из FunctionThatDoesStuff в App было бы отменяют, и было бы назвать ProjectName.OnMouseMove вместо этого. Но в C# я не мог этого сделать. Это была моя первая попытка.
public class App
{
protected void MouseMove()
{
// Engine code here
OnMouseMove(etc);
}
protected virtual void OnMouseMove(etc)
{
// Do Nothing
}
}
public class ProjectName : App
{
protected override void OnMouseMove(etc)
{
// User code here
}
}
Я попытался использовать делегатов, поскольку они были просто функциями, которые не реализованы. Однако это не сработало. Как я могу получить эквивалент в C#? Думаю, я мог бы обойти это и использовать события. Но есть ли более похожий способ сделать это.
Вы вызываете 'OnMouseMove' из' App', и он вызывает его на реализацию? Что именно * может обойти это * означает? –
@SriramSakthivel Спасибо. Я сделал редактирование на вопрос. –
Создали ли вы экземпляр 'App' или' ProjectName'. Покажите код, как вы его использовали. –