[WPF & MVVM] Mediator et GC
Bonsoir à tous,
j'ai un petit soucis lors de l'utilisation d'un mediator.
J'ai une classe Plugin qui contient ceci :
Code:
1 2 3 4 5 6 7 8
| public void Associate(String Identifiant, String Header, String Content)
{
Messenger.Instance.Register(Identifiant, delegate
{
Messenger.Instance.Notify(MediatorMessages.MainWindows_SetHeader, "pack://application:,,,/" + this.Namespace + ";component" + Header);
Messenger.Instance.Notify(MediatorMessages.MainWindows_SetContent, "pack://application:,,,/" + this.Namespace + ";component" + Content);
});
} |
Et une classe loader qui contient :
Code:
1 2 3 4 5 6 7 8
| public class Loader : Plugin
{
public Loader()
{
this.Namespace = "Cinema.Plugin";
this.Associate("Add", "/Headers/HeaderAdd.xaml", "/Contents/Add.xaml");
}
} |
Lorsque le message "Add" est emis, la méthode n'est pas appelé car il semblerait que l'objet ne soit plus en vie (qu'il ai été collecté alors qu'il ne l'est pas).
Maintenant, si je fait ceci à la place :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public class Loader : Plugin
{
public Loader()
{
this.Namespace = "Cinema.Plugin";
Messenger.Instance.Register(Identifiant, delegate
{
Messenger.Instance.Notify(MediatorMessages.MainWindows_SetHeader, "pack://application:,,,/" + this.Namespace + ";component" + "/Headers/HeaderAdd.xaml");
Messenger.Instance.Notify(MediatorMessages.MainWindows_SetContent, "pack://application:,,,/" + this.Namespace + ";component" + "/Contents/Add.xaml");
});
}
} |
Tout fonctionne à merveille, pouvez vous me dire quel est le problème lorsque que je met le Register dans la classe mère ?? (qui est dans une autre assembly, je sais pas si ça peut jouer).
Merci d'avance.
Cordialement,
NeoKript