Это может быть глупый вопрос, но здесь идет.Вызов метода при вызове другого метода
У меня есть следующая проблема:
public class MyBaseClass
{
public void SomethingAwesome()
{
//Awesome stuff happens here, but only when the Something() method
//is called in the other classes.
}
}
public class SomeClass : MyBaseClass
{
public void Something()
{
//Something happens here
}
}
public class SomeOtherClass : MyBaseClass
{
public void Something()
{
//Something else happens here
}
}
MyBaseClass имеет метод, который должен быть вызван, когда то() вызывается метод в классе, который наследует от него.
Идея заключается в том, что мне нужно регистрироваться, когда этот метод вызывается для множества скучных корпоративных причин. Я предпочел бы иметь базовый класс, который автоматически проверяет, когда вызывается метод, вместо того, чтобы разработчик сам вызывал этот метод.
Может ли быть что-то подобное достигнуто? Если да, то как?
Я рассмотрел частичные методы, но для этого потребуются классы с одинаковым именем, что невозможно в этом сценарии.
Это то, что мне нужно, однако абстрактное SomethingImpl() должно иметь реализацию. То, что мне нужно, - SomethingImpl() вызывается в SomeClass и вызывается в базовом классе. –
@helb: Это * произойдет *, потому что единственный способ вызвать код подкласса - это метод базового класса. –
@MikeEason: ему не нужно иметь реализацию, если она абстрактна. Я действительно не придерживаюсь вашего комментария, но это действительно * * то, что вы хотите, я уверен. Если вы не хотите, чтобы 'MyBaseClass' был абстрактным, вы могли бы сделать' SomethingImpl' просто пустым виртуальным методом. –