Dicionário com delegado como valor

Eu tenho aula seguinte

public class CVisitor : IVisitor
    {
        public int Visit(Heartbeat element)
        {
            Trace.WriteLine("Heartbeat"); 
            return 1;
        }
        public int Visit(Information element)
        {
            Trace.WriteLine("Information"); 
             return 1;
        }

    }

Eu quero ter um dicionário com mapeamentos, que cada tipo de argumento será mapeado para sua função de implementação: Heartbeat será mapeado parapublic int Visit(Heartbeat element)

Eu pensei em fazer algo como seguir:

    _messageMapper = new Dictionary<Type, "what should be here ?" >();
    _messageMapper.Add(typeof(Heartbeat), "and how I put it here?" );

o que devo colocar em vez de "o que deveria estar aqui?" e "e como eu coloquei aqui?"

obrigado

questionAnswers(3)

yourAnswerToTheQuestion