我想实现一个泛型类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