我正在尝试编写一个接口,例如...
interface MyInterface
{
MyObject Set(REGISTER register, PIN pin);
}
REGISTER
和PIN
都是枚举。 我遇到的问题是REGISTER
是在我的MyBaseClass
中定义的,而PIN
是在MyDerivedClass
中定义的。 我可以忍受在界面中使用类似MyBaseClass.REGISTER
的东西,但这对PIN
不起作用.MyBaseClass
的每个派生都将具有不同的PIN
枚举。 我在 SO 上找到了另一个答案,这似乎部分解决了问题,但不清楚我应该如何在MyDerivedClass
中实现该功能。 有人对此有解决方案吗?
尝试使用泛型:
interface MyInterface<TPin>
{
MyObject Set(Register register, TPin pin);
}
当你在每个派生类中实现它时,你必须告诉它引脚枚举的类型是什么:
class MyImplementation : MyInterface<MyPin>
{
MyObject Set(Register register, MyPin pin)
{
// ...
}
}
这意味着您不能有MyInterface
对象的列表,但可以有MyInterface<SomePin>
对象的列表。这是有道理的 - 如果每个实现的枚举都不同,那么给定一个MyInterface
,你怎么知道要传递什么值?