Почему делегат .NET не может быть объявлен статическим?

Когда я пытаюсь скомпилировать следующее:

public static delegate void MoveDelegate (Actor sender, MoveDirection args);

Я получаю в качестве ошибки: «Модификатор 'static' недействителен для этого элемента».

Я реализую это в синглтоне с отдельным классом, который вызывает делегат. Проблема в том, что когда я использую экземпляр singleton в другом классе для вызова делегата (по идентификатору, а не по типу), я не могу этого сделать по какой-либо причине, даже когда я объявляю делегат нестатическим. Очевидно, я могу ссылаться на него только через тип напрямую тогда и только тогда, когда делегат является статическим.

Какова причина этого? Я использую MonoDevelop 2.4.2.

update

Попробовав одно из предложений со следующим кодом:

public void Move(MoveDirection moveDir)
{
    ProcessMove(moveDir);
}

public void ProcessMove(MoveDirection moveDir)
{
    Teleporter.MoveMethod mm = new Teleporter.MoveMethod(Move); 
    moveDelegate(this, moveDir);
}

Я получил ошибку обработки, в которой говорится, что MoveMethod должен быть типом, а не идентификатор.

23
задан Anthony Mastrean 9 August 2013 в 19:14
поделиться