public void Publish <TMessage>(TMessage message) where TMessage : MvxMessage { if (typeof(TMessage) == typeof(MvxMessage)) { MvxTrace.TaggedWarning(GetType().Name, "MvxMessage publishing not allowed - this normally suggests non-specific generic used in calling code - switching to message.GetType()"); Publish(message, message.GetType()); return; } Publish(message, typeof(TMessage)); }