ho avuto la stessa cosa accada a me durante l'aggiornamento da una versione precedente di MVVM luce (cambio di set 3bdbffb4e70a “BL0014 Varie”). Immediatamente Send() ha smesso di funzionare.
Per risolvere il problema, provare a utilizzare l'overload .Register() con receiveDerivedMessagesToo impostato su true.
Questo problema può verificarsi quando Send() ing gli oggetti che hanno un certo tipo di DynamicProxy creato per loro. Ad esempio, EntityFramework farà ciò quando utilizzi la proprietà Local in una qualsiasi delle raccolte del tuo contesto dati.
ad es. EntityFramework DbContext per ctx.Dealers.Local genererà un elenco di elementi di tipo che assomigliano: System.Data.Entity.DynamicProxies.Dealer_D4CEAA0F527F5360DEB9B2B35305241B76A107C37B9DB8B368984B7DF69AEE1E
Quando corrispondenza al listener registrati Messenger.SendToTargetOrType() fallirà in quanto la Il tipo registrato è solo un "rivenditore" e non un proxy del rivenditore.
Perché questo ha funzionato senza richiedere receiveDerivedMessagesToo impostato su true e non ora?
precedenza MVVM Light "Messenger.cs" Messenger.SendToTargetOrType() ha avuto questo codice:
private void SendToTargetOrType<TMessage>(TMessage message, Type messageTargetType, object token)
{
var messageType = typeof(TMessage);
Questo ha funzionato grande dal momento che il tipo effettivo dei dati che vengono passati non aveva importanza, proprio il tipo di sei iscritto genere.
Ora il codice è stato cambiato in:
private void SendToTargetOrType<TMessage>(TMessage message, Type messageTargetType, object token)
{
Type messageType = message.GetType();
Ora il tipo di parametro viene utilizzato al posto. Questo è un problema poiché se il tuo "messaggio" è di qualche tipo di proxy la ricerca di listener Registati fallirà.
Potete inviarmi una replica a laurent (at) galasoft (punto) ch, voglio indagare. Grazie! – LBugnion
Sto utilizzando l'ultima MVVM light 3 dal programma di installazione con Silverlight 5 e la messaggistica continua a funzionare, quindi deve provenire dalla configurazione. – jv42
L'unico visto che ho visto danneggiato era in 'RaisePropertyChanged()', ma è stato documentato sul blog di @ LBugnion. – jv42