Personalizado JavaScriptConverter para DateTime?

Tengo un objeto, tiene una propiedad DateTime ... Quiero pasar ese objeto de un controlador .ashx a una página web a través de AJAX / JSON ... No quiero usar controles de terceros ...

cuando hago esto

  new JavaScriptSerializer().Serialize(DateTime.Now);

Entiendo esto:

  "\/Date(1251385232334)\/"

pero quiero "26/08/2009" (no importa la localización ... mi aplicación está muy localizada, por lo que mis suposiciones de formato de fecha no son objeto de debate en esta pregunta). Si hago / registro un convertidor personalizado

public class DateTimeConverter : JavaScriptConverter
{
    public override IEnumerable<Type> SupportedTypes
    {
        get { return new List<Type>() { typeof(DateTime), typeof(DateTime?) }; }
    }

    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
    {
        Dictionary<string, object> result = new Dictionary<string, object>();
        if (obj == null) return result;
        result["DateTime"] = ((DateTime)obj).ToShortDateString();
        return result;
    }

    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
    {
        if (dictionary.ContainsKey("DateTime"))
            return new DateTime(long.Parse(dictionary["DateTime"].ToString()), DateTimeKind.Unspecified);
        return null;
    }
}

luego obtengo este resultado (ya que el valor de retorno del método de serialización personalizado es un diccionario):

{"DateTime":"8/27/2009"}

Así que ahora en mi Javascript, en lugar de hacerlo.

somePerson.Birthday

tengo que hacer

somePerson.Birthday.DateTime 

  or

somePerson.Birthday["DateTime"]

¿Cómo puedo hacer que el convertidor personalizado devuelva una cadena directa para que pueda tener Javascript limpio?

Respuestas a la pregunta(10)

Su respuesta a la pregunta