Atributo de validação personalizado que compara o valor da minha propriedade com o valor de outra propriedade em minha classe de modelo

Eu quero criar um atributo de validação personalizado, no qual eu quero comparar o valor da minha propriedade com o valor de outra propriedade na minha classe de modelo. Por exemplo, eu tenho na minha classe de modelo:

...    
public string SourceCity { get; set; }
public string DestinationCity { get; set; }

E eu quero criar um atributo personalizado para usá-lo assim:

[Custom("SourceCity", ErrorMessage = "the source and destination should not be equal")]
public string DestinationCity { get; set; }
//this wil lcompare SourceCity with DestinationCity

Como posso chegar lá?

questionAnswers(3)

yourAnswerToTheQuestion