我有一个需要以下定义的班级:
我想创建一个包含它和映射类型及实例的集合。所以我尝试:
但我无法让它工作。以下几行和其他几行都会出现相同的错误:
该错误的翻译是:IRowDef必须是非抽象类且必须具有无参构造函数。我知道这来自Table类定义中的“new()”类型限制,但这是该类内部代码所要求的。我知道我可以通过使用一个特定的类类型来解决这个问题,该类类型包含一个无参数构造函数,例如:
但是必须支持不同类型的表格,这就是为什么它们都实现了IRowDef的原因。
有人知道我该如何解决这个问题吗?
public class Table<T> : ObservableCollection<T> where T : IRowDef, new()
我想创建一个包含它和映射类型及实例的集合。所以我尝试:
public sealed class TableCollection : IEnumerable<Table<IRowDef>>
{
private Dictionary<Type, Table<IRowDef>> _tableDictionary;
public Table<IRowDef> GetTable<T>() where T : IRowDef, new()
{
Table<IRowDef> table = null;
if (_tableDictionary.ContainsKey(typeof(T)))
{
table = _tableDictionary[typeof(T)];
}
else
{
table = new Table<IRowDef>();
_tableDictionary.Add(typeof(T), table);
}
return table;
}
...
}
但我无法让它工作。以下几行和其他几行都会出现相同的错误:
private Dictionary<Type, Table<IRowDef>> _tableDictionary;
该错误的翻译是:IRowDef必须是非抽象类且必须具有无参构造函数。我知道这来自Table类定义中的“new()”类型限制,但这是该类内部代码所要求的。我知道我可以通过使用一个特定的类类型来解决这个问题,该类类型包含一个无参数构造函数,例如:
private Dictionary<Type, Table<ClientTable>> _tableDictionary;
但是必须支持不同类型的表格,这就是为什么它们都实现了IRowDef的原因。
有人知道我该如何解决这个问题吗?
Dictionary<Type, object>
并在需要时进行强制转换? - CodeCaster