我正在尝试编写一个接口,例如...
interface MyInterface
{
MyObject Set(REGISTER register, PIN pin);
}
REGISTER
和PIN
都是枚举。我遇到的问题是REGISTER
是在我的MyBaseClass
中定义的,而PIN
是在MyDerivedClass
中定义的。我可以在界面中使用类似MyBaseClass.REGISTER
的东西,但这不适用于PIN
。 MyBaseClass
的每个派生对PIN
都有不同的枚举。我发现this other answer on SO似乎可以部分解决问题,但是目前尚不清楚我应该如何在MyDerivedClass
中实现该功能。有人对此有解决方案吗?
答案 0 :(得分:3)
尝试使用泛型:
interface MyInterface<TPin>
{
MyObject Set(Register register, TPin pin);
}
在每个派生类中实现它时,必须告诉它pin枚举的类型是什么:
class MyImplementation : MyInterface<MyPin>
{
MyObject Set(Register register, MyPin pin)
{
// ...
}
}
这意味着您不能拥有MyInterface
对象的列表,但是可以拥有MyInterface<SomePin>
对象的列表。这很有意义-如果每种实现的枚举都不同,那么给定MyInterface
,您如何知道要传递的值?