我的问题有点类似于 不允许通用接口的通用列表,还有其他方法吗?
如果我有一个界面,例如
public interface IPrimitive
{
}
public interface IPrimitive<T> : IPrimitive
{
T Value { get; }
}
public class Star : IPrimitive<string> //must declare T here
{
public string Value { get { return "foobar"; } }
}
public class Sun : IPrimitive<int>
{
public int Value { get { return 0; } }
}
然后我有一个清单
var myList = new List<IPrimitive>();
myList.Add(new Star());
myList.Add(new Sun());
遍历此列表时,如何获取 Value 属性?
foreach (var item in myList)
{
var value = item.Value; // Value is not defined in IPrimitive so it doesn't know what it is
}
我不确定这怎么可能。
谢谢,罗伯