I think you need to implement this interface implicitly in the derived class as well.
public class MyViewModel : OurViewModel, IValidatableObject
{
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
//...
}
}
And then
OurViewModel v = new OurViewModel();
MyViewModel m = new MyViewModel();
IValidatableObject ivo = v;
ivo.Validate(null);
ivo = m;
ivo.Validate(null);
Besides if an interface is implemented explicitly, you can only access the implementation through a reference to the interface. Remember, if you try to do
OurViewModel v = new OurViewModel();
v.Validate(null);
It will call the original Validate
method of the class, not the interface implementation. I think the old methods should be removed to avoid possible mistakes.