簡體   English   中英

如何初始化一個繼承接口的類?

[英]How to initalize a class that inherits interface?

我正在嘗試在我的代碼中應用SOLID 我有一個有幾個選項的菜單。 每個菜單都有一些按鈕。我正在為第一個菜單按鈕制作一個Interface

interface IConvertToPartListButton
{
    void ConvertToPartList();
}
class BtnConvertToPartList : IConvertToPartListButton
{
   void ConvertToPartList()
   {
        //Do something
   } 
}

之后,我實現了一個接口,該接口inherits了我創建的那兩個按鈕

interface IImportPartsButtons : IConvertToPartListButton,IDeleteIP
{
}

所以對於每個菜單,我都會這樣做。 之后我想繼承所有菜單按鈕:

interface IButton : IImportPartsButtons,SecondMenuButtons,ThirdMenuButtons
{
}

當我嘗試創建類BtnConverToPartList的新實例時,這是不可能的。

 public static IButton GetButton() => new BtnConvertToPartList();

錯誤:

Cannot implicitly convert type 'MOSOSoftware.BtnConvertToPartList' to 'MOSOSoftware.IButton'.

如果我做錯了什么,請寫下來,我是編程新手,我仍在學習。 謝謝你!

你在做錯誤的繼承。 “BtnConvertToPartList”實現“IConvertToPartListButton”但“IButton”不是“IConvertToPartListButton”,直到你實現“IButton”到“IConvertToPartListButton”。 請在下面找到更改后的代碼,

 interface IConvertToPartListButton : IButton
{
    void ConvertToPartList();
}


interface IImportPartsButtons : IConvertToPartListButton
{
}

interface IButton
{
}

class BtnConvertToPartList : IConvertToPartListButton
{
    public void ConvertToPartList()
    {
        //Do something
    }
}

和實例化,

public static IButton GetButton() => new BtnConvertToPartList();

現在它應該可以工作了,因為 BtnConvertToPartList 也是 IButton,因為 IButton 是 IConvertToPartListButton。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM