Caso de esquina ao usar a expressão lambdas no construtor de base

Na estrutura que estamos construindo, precisamos do seguinte padrão:

public class BaseRenderer
{
    Func<string> renderer;
    public BaseRenderer(Func<string> renderer)
    {
        this.renderer = renderer;
    }

    public string Render()
    {
        return renderer();
    }
}

public class NameRenderer : BaseRenderer
{
    public string Name{ get; set; }

     public NameRenderer ()
        : base(() =>this.Name)
     {}
}

Como você vê, criamos um lambda ao chamar o construtor de base.

public class Program
{
    public static void Main()
    {
        Console.WriteLine(new NameRenderer(){Name = "Foo"}.Render());
    }
}

Estranhamente, ao tentar realmente usar o lambda, ele lança NullReferenceException (Console Application), ou algum tipo de ExecutionEngineExceptionexception (aplicativo da Web no IIS).

Eu acho que a razão é que este ponteiro não está pronto antes de chamar o construtor base, então o lambda é incapaz de capturarthis.Name nesta fase.

Não deveria lançar uma exceção em "tempo de captura" em vez de "tempo de execução"? Esse comportamento é documentado?

Eu posso refatorar o código de uma maneira diferente, mas acho que vale a pena um comentário.

questionAnswers(5)

yourAnswerToTheQuestion