Попробуйте использовать дженерики:
interface MyInterface<TPin>
{
MyObject Set(Register register, TPin pin);
}
Когда вы реализуете его в каждом производном классе, вы должны сказать ему, каков тип enum pin:
class MyImplementation : MyInterface<MyPin>
{
MyObject Set(Register register, MyPin pin)
{
// ...
}
}
Это означаетчто у вас не может быть списка MyInterface
объектов, но у вас может быть список MyInterface<SomePin>
объектов.И это имеет смысл - если перечисление различно для каждой реализации, а затем получить MyInterface
, как вы узнаете, какие значения передать ему?