【发布时间】:2012-03-01 03:11:19
【问题描述】:
我想用通用接口 IAppcontextItem 实现一个通用类 AppContextItem。因为我想在不知道确切类型的情况下将多个 AppContextItems 存储在 List 中(而且我希望能够在列表中混合多个类型化的 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; }
}
【问题讨论】:
-
我不明白你为什么要实现这两个接口,因为通用的就足够了。唯一的区别是 Element 属性的类型;你没有从非通用接口中获得任何收益。
-
你是对的,看看我对 Wouter de Kort 答案的评论。