一個WPF程序我在C#編寫,對後端如下界面:C#協方差課中實施通用接口
public interface CatalogMenu<T> : CatalogItem where T : CatalogItem
{
void AddCatalogItem(T toAdd);
void RemoveCatalogItem(T toRemove);
List<T> AvailableCatalogItems { get; }
}
我有一個實現該接口三個等級,每一個不同的T問題是我想創建一個List<CatalogMenu<CatalogItem>>
來綁定到一個ListView,但View-Model中的這個屬性不能編譯...(thing1,thing2和thing3都實現了與不同的T接口)
public List<CatalogMenu<CatalogItem>> MenuCategories
{
get
{
return new List<CatalogMenu<CatalogItem>>(){
ModuleCatalog.thing1,
ModuleCatalog.thing2,
ModuleCatalog.thing3
};
}
}
盡我所願,編譯器不會讓我對待「實施CatalogMenu<T>
的類」,其中「T是CatalogEntity」作爲「CatalogMenu<CatalogItem>
」。我想通過一個通用接口向用戶展示實現接口的每個類。
如果我遺漏了任何細節,對我有點耐心;在閱讀了最後30分鐘的協變之後,我試着找出解決這個問題的方法。
你試過簡單的鑄造嗎? '返回新列表(){(CatalogMenu )ModuleCatalog.ting1}'? –
Alxandr
2012-02-13 02:37:31
@Alxandr:這是行不通的。 – SLaks 2012-02-13 02:40:26