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。