[英]How can I inherit from a control class and an abstract class?
我有一個帶有接受參數的方法的類,該參數必須是具有預期方法的Control。
我已經用這些方法創建了一個接口。
我創建了一個抽象類,該類繼承自Control,並實現了將所有方法抽象的接口(這是我上面的參數的類型)。
然后,我創建了一個繼承自TableLayoutPanel的類並實現了該接口。
我創建了此類的實例,但隨后我無法將其用作參數。
我知道為什么。 但是,解決方法是什么? 我知道我可以在返回Control實例的接口中添加一個方法。 在這種情況下,是TableLayoutPanel,但是我想使用實例本身...
另外,我不想在接收參數的方法內部進行強制類型轉換,例如在庫中使用時必須“編譯時/類型安全” ...
class CollapsibleList : Panel
{
public void AddItem(CollapsibleListItem item)
{
someContainer.Controls.Add(item);
item.CollapsibleListItemCollapse();
}
}
public interface ICollapsibleListItem
{
string CollapsibleListItemName { get; }
void CollapsibleListItemCollapse();
void CollapsibleListItemExpand();
}
public abstract class CollapsibleListItem : Control, ICollapsibleListItem
{
public abstract string CollapsibleListItemName { get; }
public abstract void CollapsibleListItemCollapse();
public abstract void CollapsibleListItemExpand();
}
class ListBoxCollapsibleListItem : TableLayoutPanel, ICollapsibleListItem
{
//... implemented interface methods
}
class Main
{
public void SomeMethod()
{
var item = new ListBoxCollapsibleListItem();
var collapsibleList = new CollapsibleList();
collapsibleList.AddItem(item as CollapsibleListItem); //cast error!
}
}
試試下面,
collapsibleList.AddItem(item為ICollapsibleListItem);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.