Je souhaite créer un événement personnalisé qui peut avoir un nombre quelconque d'objets que ses paramètres et les objets qu'il reçoit n'est pas connu à l'avance.
Je sais que je peux transmettre un objet [] mais ce que je voudrais est quelque chose de similaire à p> où le nombre d'objets peut être 0 ou 10 si nécessaire. p> Donc, grâce aux commentaires et réponses que j'ai je suis venu à cela, p> est-il acceptable? P> P> P> P> P >
3 Réponses :
Vous pouvez définir un délégué en tant que tel: puis l'utiliser dans votre définition de votre événement: p> Cependant, c'est cependant contrairement aux meilleures pratiques et non recommandée. Au lieu de cela, vous devez encapsuler toutes les informations supplémentaires que vous avez besoin dans votre propre sous-classe evenargs CODE> et utilisez-la de votre délégué: p>
public class MyEventArgs : EventArgs
{
// any extra info you need can be defined as properties in this class
}
public event EventHandler<MyEventArgs> MyEvent;
Merci Kent. Peut-être que j'étais un peu flou dans ce que je voulais réellement. Je voudrais pouvoir passer un éventail d'objets ou plusieurs objets individuellement et je ne sais pas combien d'objets il y a à l'avance.
Il n'y a rien pour vous empêcher de déclarer un délégué qui accepte une matrice de paramètres, la même chose que vous définissez une autre méthode qui prend plusieurs arguments:
delegate void someCustomEvent(params object[] args); event someCustomEvent sce;
Vous pouvez créer des délégués comme celui-ci: p> et événement: p> EventHandler code> est juste un délégué.
Bar2(this, new MyEventArgs(1, ""));
Merci pour votre réponse, cela résume tout ce que je cherchais assez bien.
Que diriez-vous d'utiliser
parames objet [] args code>?
Merci d'avoir souligné des params, à peu près ce que je cherchais. Maintenant, comment puis-je utiliser des params avec la meilleure pratique que Kent a écrit dans sa réponse?
Nous ferions probablement mieux résoudre le problème qui vous a conduit à cette solution actuelle que d'essayer de corriger cette solution. C'est à dire. Cette définition du gestionnaire d'événements a l'air suspecte, alors quel problème résoudra-t-il réellement pour vous? Pourquoi ne savez-vous pas quels objets vous allez passer aux gestionnaires d'événements? Pourquoi n'ont-ils pas de meilleure classe parent que l'objet? etc.