Так вот моя установка и комментарий показывает, что я хочу сделать:Вызов метода в родительском классе
class Process
{
void SomeMethod()
{
// Here I want to call Parent.MethodToCall()
}
}
class Controller
{
Process c = new Process();
void MethodToCall()
{
}
}
Теперь Controller.MethodToCall()
будет вызываться много раз на протяжении всего жизненного цикла Process
класса.
Это должен быть вызван только родительский метод, поэтому я считаю, что использование event
было бы немного расточительным, поскольку я никогда не удалю обработчик, и будет только один вызов.
Так как я в настоящее время используют, чтобы обойти это, как следует:
class Process
{
public Func<void> Method { get; set; }
void SomeMethod()
{
Method();
}
}
class Controller
{
Process c = new Process() { Method = MethodToCall }
void MethodToCall()
{
}
}
Во-первых, синтаксис не может быть совершенным, я быстро выбил его в блокноте.
Мой вопрос: Каков наилучший способ добиться того, чего я хочу, потому что то, что я делаю, выглядит довольно грязным? ... или я думаю об этом совершенно неправильно с точки зрения дизайна?
По сути, я хочу вызвать метод в классе Controller, не делая его общедоступным, потому что, если он является общедоступным, я могу просто передать контроллер в качестве параметра Process.
Как насчет наследства? Ребенок: родительский – saj
Родительские/дочерние имена заставляют нас думать о наследовании, и это не так, иначе вы можете просто защитить его (или ... это?). Лучшее решение (если делегат не то, что вы хотите) может включать в себя интерфейс (и это единственный случай, когда вы можете даже иметь частное наследование), но вы должны описать ** домен ** ... что лучше в одном случае не может быть хорошим в другом (и вы не получите 1000 ответов о том, как вызвать метод ...) –
Я согласен. на любом сценарии «Дети» могут иметь «Несколько» родителей и «Родители» могут иметь «Несколько «Дети» больше информации о том, как OP намеревается использовать или использует, были бы наиболее полезны для всех нас в отношении предоставления наилучшего ответа. – MethodMan