Вопрос

у меня есть этот фрагмент

private void westButton_click(object sender, EventArgs ea)
{
    PlayerCharacter.Go(Direction.West);
}

повторяется для Севера, Юга и Востока.

Как я могу объявить функцию, которая позволит мне программно генерировать такие методы, как ir?

например, я хотел бы иметь возможность позвонить

northButton.Click += GoMethod(Direction.North);

вместо определения метода, а затем

northButton.Click += new EventHandler(northButton.Click);
Это было полезно?

Решение

northButton.Click += (s, e) => GoMethod(Direction.North);

(или...)

northButton.Click += (s, e) => PlayerCharacter.Go(Direction.North);

Другие советы

Кажется, я нашел решение:

private EventHandler GoMethod(Direction dir)
{
    return new EventHandler((object sender, EventArgs ea) => PlayerCharacter.Go(dir));
}

Меня беспокоит только время связывания;если PlayerCharacter null когда я вызываю GoMethod, что произойдет?

northButton.Click += (s,e) => GoMethod(Direction.North);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top