Pourquoi un .NET délégué ne pas être déclaré statique?

Lorsque j'essaie de compiler les suivantes:

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

Je reçois, comme une erreur: "Le modificateur" statique " n'est pas valide pour cet élément."

Je me suis mise en œuvre de ce à l'intérieur d'un singleton, avec une catégorie distincte qui appelle le délégué. Le problème est que lorsque j'utilise l'instance du singleton dans l'autre classe pour appeler le délégué (à partir de l'identifiant, pas le type), je ne peux pas le faire pour quelque raison que ce soit, même lorsque je déclare le délégué des non-statique. Évidemment, je ne peut que se référer à celui-ci via le type directement si et seulement si le délégué est statique.

Quel est le raisonnement derrière cela? Je suis à l'aide de MonoDevelop 2.4.2.

mise à jour

Après avoir essayé l'une des suggestions avec le code suivant:

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

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

J'ai reçu une erreur de traitement, qui stipule que le MoveMethod doivent être d'un type, et pas un identificateur.

  • Je pense qu'un petit exemple de code va vous aider à expliquer le problème. J'ai lu, deuxième alinéa, cinq fois et ont encore aucune idée de ce que et comment vous voulez accomplir.
  • Quel est le but de la mm variable dans le ProcessMove méthode? Si certains délégué (statique ou instance) est affecté à moveDelegate, puis de l'appel d' moveDelegate va appeler le délégué désigné, comme il se doit.
  • Je pense que les interfaces sont mieux pour cela. Merci de voir ma réponse
InformationsquelleAutor zeboidlund | 2011-07-26