Propiedad condicionalmente requerida usando anotaciones de datos

Tengo una clase como esta:

public class Document
{
   public int DocumentType{get;set;}

   [Required]
   public string Name{get;set;}

   [Required]
   public string Name2{get;set;}
}

Ahora si pongo un[Required] anotación de datos en elName yName2 propiedades, entonces todo está bien y siName oName2 están vacíos, la validación arrojará un error.

Pero yo quieroName solo se requiere siDocumentType es igual a 1 yName2 solo requerido siDocumentType es igual a 2.

public class Document
{
   public int DocumentType{get;set;}

   [Required(Expression<Func<object, bool>>)]
   public string Name{get;set;}

   [Required(Expression<Func<object, bool>>)]
   public string Name2{get;set;}
}

pero sé que no puedo, causa un error. ¿Qué debo hacer para este requisito?

Respuestas a la pregunta(6)

Su respuesta a la pregunta