Cuando intento compilar lo siguiente:¿Por qué un delegado de .NET no se declara estático?
public static delegate void MoveDelegate (Actor sender, MoveDirection args);
recibo, como un error: "El modificador 'estático' no es válido para el presente artículo."
Estoy implementando esto en un singleton, con una clase separada que llama al delegado. El problema es que cuando uso la instancia singleton dentro de la otra clase para llamar al delegado (del identificador, no del tipo), no puedo hacer eso por la razón que sea, incluso cuando declaro que el delegado no es estático. Obviamente, solo puedo referirme a él a través del tipo directamente si y solo si el delegado es estático.
¿Cuál es el razonamiento detrás de esto? Estoy usando MonoDevelop 2.4.2.
actualización
Después de probar una de las sugerencias con el siguiente código:
public void Move(MoveDirection moveDir)
{
ProcessMove(moveDir);
}
public void ProcessMove(MoveDirection moveDir)
{
Teleporter.MoveMethod mm = new Teleporter.MoveMethod(Move);
moveDelegate(this, moveDir);
}
He recibido un error de procesamiento, que establece que el MoveMethod debe ser un tipo, y no una identificador.
Creo que un pequeño ejemplo de código te ayudará a explicar el problema. Leí el segundo párrafo cinco veces y todavía no tengo ni idea de qué y cómo quieres lograr. –
¿Cuál es el propósito de la variable 'mm' en el método' ProcessMove'? Si se asigna un delegado (ya sea estático o de instancia) a 'moveDelegate', entonces la llamada' moveDelegate' llamará al delegado asignado, como debería. – Groo
Creo que las interfaces son mejores para esto. Por favor, consulte [mi respuesta] (http://stackoverflow.com/questions/6835766/c-delegate-cannot-be-declared-static/6835948#6835948) –