繁体   English   中英

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

[英]How to Implement Interface with Enum Specific to Derived Class in C#?

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

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

REGISTERPIN都是枚举。 MyBaseClass的问题是REGISTERMyBaseClass中定义,而PINMyDerivedClass定义。 我可以在界面中使用MyBaseClass.REGISTER之类的东西,但这对于PIN无效。 每推导MyBaseClass将有不同的枚举PIN 在SO上找到了另一个答案 ,这似乎可以部分解决问题,但是目前还不清楚我应该如何在MyDerivedClass实现该功能。 有人对此有解决方案吗?

尝试使用泛型:

interface MyInterface<TPin>
{
    MyObject Set(Register register, TPin pin);
}

在每个派生类中实现它时,必须告诉它pin枚举的类型是什么:

class MyImplementation : MyInterface<MyPin>
{
    MyObject Set(Register register, MyPin pin)
    {
        // ...
    }
}

这意味着您不能具有MyInterface对象的列表,但是可以具有MyInterface<SomePin>对象的列表。 这很有意义-如果每个实现的枚举都不同,那么给定MyInterface ,您将如何知道要传递的值?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM