Comportamiento extraño con delegados y lambdas

Como medio para introducir una evaluación de formato diferido en una biblioteca que estoy desarrollando, he definido los delegados

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

y algo similar a la siguiente clase

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

in embargo, esto se está comportando de manera bastante extraña: cuando se ejecuta desde unaextern proyecto, la declaración

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

hacen compilar, fallando con el error

Error   1   Delegate 'MessageFormatterDelegate' does not take 4 arguments

mientra

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

compila y funciona sin problemas, imprimiendo1,2,3 en la consola. ¿Por qué tengo que calificar elmessage argumento conMessageFormatterDelegate escriba la segunda expresión lambda? ¿Hay alguna forma de evitar este comportamiento?

Respuestas a la pregunta(4)

Su respuesta a la pregunta