Comment passer un délégué à une autre classe
Dans ma classe principale " A "j'ai déclaré une fonction et délégué pour appeler cette fonction, je veux passer mon déléguer à une autre classe" B " mais comment vais-classe B savoir quel type le délégué est?
classe Un
public delegate void SendInfo(string[] info);
SendInfo sendInfo = new SendInfo(SendInformation); //I have a function SendInformation
B b = new B();
b.SetDelegate(sendInfo);
classe B
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;
}
Merci,
Eamonn
OriginalL'auteur Eamonn McEvoy | 2011-03-31
Vous devez vous connecter pour publier un commentaire.
Lorsque vous déclarez le délégué "dans" la classe A, vous le déclarer comme un sous-type de la classe A. il est Donc de type
ClassA.SendInfo
par exemple. Dans la classe B vous pouvez utiliserSinon, déclarez-le délégué à l'extérieur du code pour la classe A, alors il sera tout simplement un autre type, vous pouvez faire référence par nom (
SendInfo
).OriginalL'auteur Kieren Johnstone
Pourquoi êtes-vous déclarer séparément les deux types délégués avec la même signature? Déclarer un unique type de délégué (si vous avez vraiment à utiliser le
Func
etAction
famille lorsque c'est possible) en dehors de toutes les autres classes, et de l'utiliser partout.Vous devez être conscient que lorsque vous écrivez:
c'est vraiment de la déclaration d'une type - et vous pouvez déclarer ce type directement dans un espace de noms; il n'a pas à être le membre d'un autre type.
OriginalL'auteur Jon Skeet
Il suffit de déclarer le délégué une fois directement à l'intérieur de votre espace de noms et pas à l'intérieur d'une classe.
OriginalL'auteur Daniel Hilgarth