omportamento estranho usando delegados e lambd

Como meio de introduzir uma avaliação de formatação lenta em uma biblioteca que estou desenvolvendo, defini os delegados

public delegate string MessageFormatterDelegate(string message, params object[] arguments);
public delegate string MessageFormatterCallback(MessageFormatterDelegate formatterDelegate);

e algo parecido com a classe a seguir

public static class TestClass
{
    public static string Evaluate(MessageFormatterCallback formatterCallback)
    {
        return (formatterCallback(String.Format));
    }
}

No entanto, isso está se comportando de maneira estranha: ao executar a partir de umextern projeto, a declaração

Console.WriteLine(TestClass.Evaluate(message => message("{0},{1},{2}", 1, 2, 3)));

faznã compile, falhando com o erro

Error   1   Delegate 'MessageFormatterDelegate' does not take 4 arguments

enquant

Console.WriteLine(TestClass.Evaluate((MessageFormatterDelegate message) => message("{0},{1},{2}", 1, 2, 3)));

compila e trabalha sem problemas, imprimindo1,2,3 no console. Por que tenho que qualificar omessage argumento comMessageFormatterDelegate digita a segunda expressão lambda? Existe alguma maneira de contornar esse comportamento?

questionAnswers(4)

yourAnswerToTheQuestion