Caso de esquina en el uso de la expresión de lambdas en constructor base

En el Marco que estamos construyendo necesitamos el siguiente patrón:

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 ves, creamos un lambda al llamar al constructor base.

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

Curiosamente, cuando se intenta utilizar realmente el lambda, se lanza NullReferenceException (aplicación de consola), o algún tipo de ExecutionEngineExceptionexception (aplicación web en IIS).

Creo que la razón es que este puntero no está listo antes de llamar al constructor base, por lo que el lambda no puede capturarthis.Name En este punto.

¿No debería lanzar una excepción en "tiempo de captura" en lugar de "tiempo de ejecución"? ¿Está documentado este comportamiento?

Puedo refactorizar el código de una manera diferente, pero creo que merece un comentario.

Respuestas a la pregunta(5)

Su respuesta a la pregunta