8
votes

Comment passer un délégué à une autre classe

Dans ma classe principale 'A' J'ai déclaré une fonction et déléguée à appeler cette fonction, je veux transmettre mon délégué à une autre classe 'B' mais comment la classe B savoir quel type le délégué est?

classe A P>

public delegate void SendInfo(string[] info); //I know this is wrong but how will 
SendInfo SendInformation;                     //this class know what SendInfo is?

public void SetDelegate(SendInfo sendinfo)    //What type is this parameter?
{
    sendinfo.GetType();
    SendInformation = sendinfo;
}


0 commentaires

3 Réponses :


10
votes

Lorsque vous déclarez le délégué 'in' classe A, vous le déclarez sous forme de sous-type de classe A. Donc, il est de type classa.sendinfo code> par exemple. Dans la classe B, vous pouvez utiliser

public void SetDelegate(ClassA.SendInfo sendinfo)


0 commentaires

10
votes

Pourquoi déclarez-vous deux types de délégués distincts avec la même signature? Déclarer un type type de délégué (si vous devez vraiment - utiliser le FUNC et action familles dans la mesure du possible) en dehors de toutes les autres classes et utilisez-la partout.

Vous devez être conscient que lorsque vous écrivez: xxx

qui déclare vraiment un type type - et vous pouvez déclarer ce type directement dans un espace de noms; Il ne doit pas nécessairement être le membre d'un autre type.


1 commentaires

Comme Jon mentionne, action serait un bon type à utiliser pour le délégué au lieu de définir un nouveau.



6
votes

Déclarez simplement le délégué une fois directement dans votre espace de noms et pas à l'intérieur d'une classe.


0 commentaires