Propriedade Condicionalmente Necessária Usando Anotações de Dados

Eu tenho uma classe como esta:

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

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

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

Agora, se eu colocar um[Required] anotação de dados noName eName2 propriedades, então está tudo bem e seName ouName2 estão vazios, a validação gerará um erro.

Mas eu queroName campo apenas a ser necessário seDocumentType é igual a 1 eName2 necessário apenas seDocumentType é 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;}
}

mas sei que não posso, isso causa um erro. O que devo fazer para esse requisito?

questionAnswers(6)

yourAnswerToTheQuestion