[英]How to Implement Interface with Enum Specific to Derived Class in C#?
我正在嘗試編寫一個接口,例如...
interface MyInterface
{
MyObject Set(REGISTER register, PIN pin);
}
REGISTER
和PIN
都是枚舉。 我MyBaseClass
的問題是REGISTER
在MyBaseClass
中定義,而PIN
在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
,您將如何知道要傳遞的值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.