Normalement, j'aller:Comment ajouter un événement BackgroundWorker RunWorkerCompleted par réflexion?
bgwExportGrid.RunWorkerCompleted += ReportManager.RunWorkerCompleted;
La classe ReportManager est une classe statique contenant le gestionnaire d'événements que je veux utiliser.
public static class ReportManager
{
public static void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
...
}
}
Maintenant, j'ai créé un BackgroundWorker et que vous souhaitez joindre l'événement RunWorkerCompleted tel que défini dans ReportManager. Cependant, ReportManager ne peut pas être référencé car sinon une référence cyclique se produit donc une réflexion est nécessaire.
Toute aide serait grandement appréciée.
Je l'ai regardé ce qui suit, mais ne l'ai pas obtenu très loin:
Assembly assem = Utils.GetAssembly("WinUI.Reporting.Common.dll");
Type reportManagerType = assem.GetModule("WinUI.Reporting.Common.dll").GetType("WinUI.Reporting.Common.ReportManager");
EventInfo evWorkerCompleted = reportManagerType.GetEvent("RunWorkerCompleted");
Type tDelegate = evWorkerCompleted.EventHandlerType;
Vous devriez vraiment pas vous peindre dans ce coin ... tirer une interface dans un ensemble commun –