我想實現一個泛型類AppContextItem與通用接口IAppcontextItem。因爲我想在List中存儲多個AppContextItem而不知道確切的類型(並且我希望能夠在列表中混合多個類型化的AppContextItems)。我創建了另一個非通用接口IAppContextItem。 IAppContextItem的通用實現應該隱藏非泛型字段,但它不知道,因爲我得到一個編譯錯誤,告訴我需要用返回類型對象實現Element。是不可能做我想做的或者我做錯了什麼?的母公司非通用接口方法通用接口隱藏
IAppcontextItem.cs
public interface IAppContextItem
{
string Key { get; set; }
object Element { get; set; }
}
public interface IAppContextItem<T> : IAppContextItem
where T : class
{
new string Key { get; set; }
new T Element { get; set; }
}
AppContextItem.cs
public class AppContextItem<T> : IAppContextItem<T> where T : class
{
private string key = string.Empty;
private T element;
public string Key
{
get { return key; }
set { key = value; }
}
public T Element
{
get { return element; }
set { element = value; }
}
我不明白你爲什麼實現2接口,因爲通用的就足夠了。唯一的區別是Element屬性的類型;你沒有從非通用接口獲得任何收益。 – jmpcm 2012-02-08 16:37:36
你說得對,看到我對Wouter de Kort的回答的評論。 – nino 2012-02-08 16:52:38