Как я могу назвать этот метод программно? Если я простой делаю KillZombies (), он говорит, что у меня нет корректных параметров, но я не знаю, какие параметры указать, когда я просто использую код...
public static void KillZombies(object source, ElapsedEventArgs e)
{
Zombies.Kill();
}
Вы пробовали:
KillZombies(null, null);
Возможно, рефакторить ваш дизайн:
public static void KillZombies(object source, ElapsedEventArgs e)
{
//more code specific to this event, logging, whathaveyou.
KillSomeZombies();
}
public static void KillSomeZombies()
{
Zombies.Kill();
}
//elsewhere in your class:
KillSomeZombies();
KillZombies(null, null);
Однако я сомневаюсь, что это хороший дизайн.
Вам придется создавать параметры и передавать их. Почему бы просто не вызвать функцию напрямую, поместив ее в другую функцию, доступную для вызова другими классами? Это сделает дизайн гораздо более аккуратным.
т.е.
internal void MakeZombiesKill()
{
Zombies.Kill();
}
?
Для вашей сигнатуры метода требуются два аргумента. Вы не можете просто вызвать KillZombies (), вам нужно будет передать правильные аргументы методу.
KillZombies(source, e);
Если у вас нет источника или e, вы можете просто передать null.
KillZombies(null, null);
Обычно вы используете объект, изнутри которого вы вызываете метод, в качестве источника (или null, если он статический).
И установите для ElapsedEventArgs значение, имеющее отношение к методу. Для ElapsedEventArgs это будет что-то вроде: new ElapsedEventArgs () {SignalTime = DateTime.Now}
KillZombies(this, new ElapsedEventArgs() { SignalTime = DateTime.Now});
Если вы действительно не используете source или e внутри метода, вы можете вызвать его с нулевыми аргументами.
KillZombies(null, null);
Технически говоря, вы должны отделить задачу внутри обработчика событий и заставить обработчик событий вызвать метод, содержащий код, который вы хотите запустить, таким образом, вы сможете вызвать этот код, не отключая обработчик событий. Однако, если вы хотите вызвать обработчик событий программно:
KillZombies(this, new ElapsedEventArgs())
Я бы все же разделил его, как это часто используется в лучших практиках...