protected virtual void OnIntraMessageReceived(IIntraMessage msg)
        {
            var routing_strategy = ViewModelEventRoutingStrategy.Bubble;
            msg.Properties.IfContainsKey(ROUTING_STRATEGY, x => routing_strategy = (ViewModelEventRoutingStrategy)x);

            var event_name = msg.UniqueName;
            msg.Properties.IfContainsKey(EVENT_NAME, x => event_name = (string)x);

            RaiseEvent(msg.UniqueName, msg, routing_strategy, canRunAsynchronously: !msg.IsSynchronous);
        }
 public void Receive(IIntraMessage msg)
 {
     OnMessageReceived(msg);
 }
 protected abstract void OnMessageReceived(IIntraMessage msg);