我有一个像这样定义的泛型类:
public abstract class StationProperty{}
public class StationProperty<T>
{
public int Id { get; set; }
public T Value { get; set; }
}
然后我有一个如下所示的列表:
var props = new List<StationProperty>();
到目前为止一切顺利,除非我尝试将项目添加到列表中,如下所示:
var prop = new StationProperty<bool>(39, true);
// var prop = new StationProperty<int>(39, 100); another example
props.Add(prop);
它抛出设计时间错误:参数类型&lt;布尔&GT;不能分配给参数类型X
我的想法是拥有一个强类型值(不使用对象)的值列表,然后能够在以后使用泛型推断它们的类型。
答案 0 :(得分:5)
那是因为StationProperty<T>
不是StationProperty
。他们唯一的共同点是名字。也许一个人应该来自另一个人?
public class StationProperty<T>:StationProperty{}
答案 1 :(得分:1)
StationProperty
和StationProperty<T>
是两个独立类。
您正在创建第一个列表并插入第二个实例 - 无法完成。