Excluyendo elementos específicos en una colección al serializar a JSON

Estoy intentando "seleccionar" qué objetos de una colección de un tipo específico quiero serializar.

Ejemplo de configuración:

public class Person
{
    public string Name { get; set; }

    public List<Course> Courses { get; set; }
}

public class Course
{
    ...

    public bool ShouldSerialize { get; set; }
}

Necesito poder excluir todos los cursos en la colección Person.Courses donde ShouldSerialize es falso. Esto debe hacerse desde ContractResolver: la propiedad ShouldSerialize es un ejemplo, en mi escenario real puede haber otros criterios. Prefiero no tener que crear un ShouldSerializeCourse (como se especifica aquí)http://james.newtonking.com/json/help/index.html?topic=html/ConditionalProperties.htm )

Parece que no puedo descubrir qué método anular en el ContractResolver. ¿Cómo voy a hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta