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

吉姆·费尔

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

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

这两个REGISTERPIN是枚举。我遇到的问题是在REGISTER中定义的,MyBaseClassPIN在中定义的MyDerivedClass我可以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,您如何知道要传递的值?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

c#实现派生类中使用的接口变量

如何在基类中使用派生类属性?C#

C#如何从派生类调用接口方法

在基类中声明的C#接口方法无需在派生类中再次实现

C#:我的派生类无法覆盖基类的接口方法实现,为什么?

如何在baseclass方法中使用派生类变量

如何在列表派生类中使用列表理解

获取所有首先实现接口但没有派生类的c#类型

是否可以在接口的派生类中仅使用C#中的该接口的某些方法?

如何在C#中使用派生类型重写泛型方法

C#实现接口定义的派生类型?

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

强制派生类实现接口

在C#中的派生类中重写枚举

如何在基类中使用派生类成员设计我需要的类?

C#:当派生类及其基类都实现IEnumerable时,在派生迭代器类上使用LINQ

如何在派生类中实现虚函数?

在 C# 中使用基类和派生类实例化数组中的对象

如何在基类构造函数中使用派生类成员

如何在派生类数据中使用基类进行比较

强制派生类使用泛型实现方法-C#

C#如何从基类的派生类中获取特定类型的所有字段?

在C#中使用通用类型实现接口的类的工厂?

在讨论向量内部的对象时,如何访问特定于派生类的方法和属性?

如何在派生类中使只读属性可写?

如何在基类中定义一个静态接口,并确保该接口必须在派生类中实现?

如何动态加载DLL并在其中使用类(实现已知接口)[C#]

如何使用C ++中的相同实现正确表达两个派生类函数?

如何在派生类和方法调用中使用mypy?