簡體   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