如何初始化一个继承接口的class?

How to initalize a class that inherits interface?

我正在尝试在我的代码中应用 SOLID。我有一个包含多个选项的菜单。每个菜单都有一些 buttons.I 正在为第一个菜单按钮制作 Interface

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

之后,我实现了一个界面,inherits 我创建的那两个按钮

interface IImportPartsButtons : IConvertToPartListButton,IDeleteIP
{
}

所以对于每个菜单我都会这样做。之后我想继承所有的菜单按钮:

interface IButton : IImportPartsButtons,SecondMenuButtons,ThirdMenuButtons
{
}

当我尝试创建 class 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。