如何在 C# 中实现特定于派生类的枚举接口?



我正在尝试编写一个接口,例如...

interface MyInterface
{
MyObject Set(REGISTER register, PIN pin);
}

REGISTERPIN都是枚举。 我遇到的问题是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,你怎么知道要传递什么值?

最新更新