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

如何在C#中实现特定于派生类的枚举接口?,c#,inheritance,enums,interface,C#,Inheritance,Enums,Interface,我正在尝试编写一个接口,例如 interface MyInterface { MyObject Set(REGISTER register, PIN pin); } 寄存器和引脚都是枚举。我遇到的问题是,REGISTER在我的MyBaseClass中定义,PIN在MyDerivedClass中定义。我可以在界面中使用类似于MyBaseClass.REGISTER的东西,但这对PIN不起作用。MyBaseClass的每个派生都将对PIN进行不同的枚举。我发现,这似乎部分解决了问题,但不清

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

interface MyInterface
{
    MyObject Set(REGISTER register, PIN pin);
}
寄存器
引脚
都是枚举。我遇到的问题是,
REGISTER
在我的
MyBaseClass
中定义,
PIN
MyDerivedClass
中定义。我可以在界面中使用类似于
MyBaseClass.REGISTER
的东西,但这对
PIN
不起作用。
MyBaseClass
的每个派生都将对
PIN
进行不同的枚举。我发现,这似乎部分解决了问题,但不清楚接下来应该如何在
MyDerivedClass
中实现该函数。有人对此有解决方案吗?

尝试使用泛型:

interface MyInterface<TPin>
{
    MyObject Set(Register register, TPin pin);
}
接口MyInterface
{
MyObject集合(寄存器、TPin引脚);
}
在每个派生类中实现时,必须告诉它pin枚举的类型:

class MyImplementation : MyInterface<MyPin>
{
    MyObject Set(Register register, MyPin pin)
    {
        // ...
    }
}
类MyImplementation:MyInterface
{
MyObject集合(寄存器,MyPin引脚)
{
// ...
}
}
这意味着您不能拥有
MyInterface
对象列表,但可以拥有
MyInterface
对象列表。这很有意义-如果每个实现的枚举不同,那么给定一个
MyInterface
,您如何知道要传递什么值?

尝试使用泛型:

interface MyInterface<TPin>
{
    MyObject Set(Register register, TPin pin);
}
接口MyInterface
{
MyObject集合(寄存器、TPin引脚);
}
在每个派生类中实现时,必须告诉它pin枚举的类型:

class MyImplementation : MyInterface<MyPin>
{
    MyObject Set(Register register, MyPin pin)
    {
        // ...
    }
}
类MyImplementation:MyInterface
{
MyObject集合(寄存器,MyPin引脚)
{
// ...
}
}

这意味着您不能拥有
MyInterface
对象列表,但可以拥有
MyInterface
对象列表。这是有意义的——如果每个实现的枚举都不同,那么给定一个
MyInterface
,您如何知道传递它的值呢?

为什么您的枚举不在它们自己的文件中,而不是在类中定义?或者我误解了为什么你的枚举不只是在它们自己的文件中,而不是在类中定义?还是我误解了