C# 如何初始化继承接口的类?

C# 如何初始化继承接口的类?,c#,solid-principles,C#,Solid Principles,我试图在我的代码中应用SOLID。我有一份菜单,有几个选项。每个菜单都有一些按钮。我正在为第一个菜单按钮制作一个界面: interface IConvertToPartListButton { void ConvertToPartList(); } class BtnConvertToPartList : IConvertToPartListButton { void ConvertToPartList() { //Do something } }

我试图在我的代码中应用
SOLID
。我有一份菜单,有几个选项。每个菜单都有一些按钮。我正在为第一个菜单按钮制作一个
界面

interface IConvertToPartListButton
{
    void ConvertToPartList();
}
class BtnConvertToPartList : IConvertToPartListButton
{
   void ConvertToPartList()
   {
        //Do something
   } 
}
之后,我实现了一个接口,该接口继承了我创建的两个按钮

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

BtnConvertToPartList
没有实现接口
IButton
?您的继承走错了方向
IImportPartsButtons
应该源自
IButton
而不是反过来。为什么要为每个按钮创建一个界面?为什么IButton会继承所有特定的按钮接口?我正试图这么做->按钮->菜单按钮->菜单按钮。我有50颗纽扣。在第一份菜单里我有三份。所以我创建了3个接口,并将它们组合成一个IImportPartsButtons,然后IButton继承所有菜单按钮。哪些是不必要的?异常没有说“创建失败”。创作是好的。您请求的返回值应该是IButton,例外情况是您创建的东西不是IButton。