Propiedad de serialización JavascriptSerializer dos veces cuando se usa "nuevo" en la subclase

Intentar crear un servicio para devolver un objeto que tenga muchas propiedades compartidas, pero una propiedad debería estar muy limitada en algunas situaciones. Esto se traduce en un comportamiento extraño e indeseado, donde el nombre de una propiedad se reutiliza en la salida serializada, lo que resulta en un comportamiento incorrecto en el navegador. Aquí hay un ejemplo que se puede pegar en LINQPad (si agrega una referencia aSystem.Web.Extensions) para ver el problema:

void Main()
{
    System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();

    json.Serialize(new Full(true)).Dump();
    json.Serialize(new Limited()).Dump();
}

public class Full
{
    public String Stuff { get { return "Common things"; }  }
    public FullStatus Status { get; set; }

    public Full(bool includestatus)
    {
        if(includestatus)
            Status = new FullStatus();
    }
}

public class Limited : Full
{
    public new LimitedStatus Status { get; set; }

    public Limited() : base(false)
    {
        Status = new LimitedStatus();
    }
}

public class FullStatus 
{
    public String Text { get { return "Loads and loads and loads of things"; } }
}

public class LimitedStatus 
{
    public String Text { get { return "A few things"; } }
}

Esto imprime:

{"Stuff":"Common things","Status":{"Text":"Loads and loads and loads of things"}}
{"Status":{"Text":"A few things"},"Stuff":"Common things","Status":null}

Cuando se llama a JSON.parse en el navegador, el segundo estado anula al primero, lo que significa que el estado siempre es nulo.

La única forma que puedo ver de arreglar esto es refactorizando para que FullStatus y LimitedStatus hereden de un padre común y usenoverride mejor quenew - Un poco más complicado en el código del mundo real, pero posible. ¿Es correcta mi suposición? Y también, me interesaría saber si este es un comportamiento esperado o un error.

Respuestas a la pregunta(1)

Su respuesta a la pregunta