Я могу понять, что что-то здесь не так (и я не знаю вашу архитектуру класса в целом), но почему ваш метод ValidateDevice не принимает только проверяемые объекты?Сигнатура будет выглядеть так:
public bool ValidateDevice(IValidatableObject someobj)
Разве это не то, что выражает функциональность метода, который проверяет : он принимает что-то, что проверяется .Все остальное может остаться таким, как есть (то есть не позволяйте IDeviceDataObject
наследовать от IValidatableObject
, так как вы можете выразить, что не каждый devicedataobject также может быть проверен, например)
Второй способ, если хотитечтобы убедиться, что ValidateDevice
принимает только объекты, реализующие IDeviceDataObject
, вы также можете попробовать выполнить перекрестное приведение к IValidatableObject
:
public bool ValidateDevice(IDeviceDataObject someobj)
{
if(someobj is IValidatableObject)
{
return ((IValidatableObject)device).Validate();
}
return //something that makes sense if the device is not validatable
}