Со мной происходило то же самое при обновлении более старой версии MVVM Light (набор изменений 3bdbffb4e70a «BL0014 Misc»).Мгновенно перестал работать Send ().
Чтобы решить эту проблему, попробуйте использовать перегрузку .Register () с параметром receiveDerivedMessagesToo, установленным в true.
Эта проблема может возникать при отправке.() объекты, для которых создан какой-то тип DynamicProxy.Например, EntityFramework будет делать это, когда вы используете свойство Local в любой из коллекций контекста данных.
Например, EntityFramework DBContext для ctx.Dealers.Local создаст список элементов типа, которые выглядят следующим образом: System.Data.Entity.DynamicProxies.Dealer_D4CEAA0F527F5360DEB9B2B35305241B76A107C37B9DB8B368984B7DF69AEE1E
При сопоставлении с зарегистрированным прослушивателем, отправителем, отправившим заявку, не получил (-а), вы не получили (не отправили), так как вы не получили его, так как вы не получили уведомление о получении, так как вы не получили (не получили), поскольку вы не получили уведомление о получении, так как вы не получили (не получили), так как вы не получили (не получили), поскольку вы не получили (или не получили), поскольку вы не получили (-а) пересылку.
Почему это работало без необходимости, чтобы для метода receiveDerivedMessagesToo было установлено значение true, а сейчас нет?
Ранее MVVM Light "Messenger.cs" Messenger.SendToTargetOrType () имел этот код:
private void SendToTargetOrType<TMessage>(TMessage message, Type messageTargetType, object token)
{
var messageType = typeof(TMessage);
Это прекрасно работало, так как фактический тип передаваемых данных не имел значения, только тип зарегистрированного типа.
Теперь код был изменен на:
private void SendToTargetOrType<TMessage>(TMessage message, Type messageTargetType, object token)
{
Type messageType = message.GetType();
Теперь вместо него используется тип параметра.Это проблема, поскольку если ваше «сообщение» относится к прокси-серверу определенного типа, поиск зарегистрированных слушателей завершится неудачей.