Я хотел бы сделать делегата доступным для всего класса. Смысл этого состоит в том, чтобы позволить вызываемому методу из внешнего класса backgroundWorker постоянно отчитываться через все его методы (ExternalClass.Run (); вызывает ExternalClass.Method2 (); ExternalClass.Method3 () и т. Д., И все они нуждаются отправлять несколько отчетов о ходе выполнения. Кажется неэффективным постоянно пропускать делегата.
Я попытался инициализировать экземпляр делегата глобально и установить его равным переданному экземпляру в Run (); для каждого метода, который затем будет доступен для него, но я получаю сообщение об ошибке, что нулевой объект не может быть неявно преобразован.
спасибо!
Я не могу показать код, с которым я работаю, поскольку у меня его сейчас нет (он у меня на ноутбуке), но сейчас я попытаюсь объяснить его лучше. Псевдокод:
class form1 : form {
backgroundWorker_doWork()
{
Class2.Run();
}
backgroundWorker_OnProgressChange()
{
// do this
}
}
class class2{
Run(){
OtherMethod();ThirdMethod();
}
OtherMethod(){ //need to call backgroundWorker.ReportProcess(int, string)}
ThirdMethod(){ //need to call backgroundWorker.ReportProcess(int, string)}
}
Я действительно не хочу передавать его каждый раз, когда есть смысл, я бы хотел как-то передать его в class2