[英]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.