【发布时间】:2009-05-12 08:46:45
【问题描述】:
我有以下代码,我正在尝试为我的 DAL 中的对象创建一个通用集合(只是一个练习,实际上不是生产代码)。我的问题是我想使用传入的类型 Read 方法(这是类实现的接口的一部分)。
我无法创建new T,因此我没有可使用的对象实例,也无法将其声明为基类型,因为我需要基对象的子对象指定的读取方法。
这真的可能吗?还是我找错了树?
public class ItemDictionary<T> where T : ILoadable, DataItem
{
public void Load()
{
using (IDataReader reader = SqlHelper.ExecuteReader(_connection, CommandType.StoredProcedure, _proc)) {
Read(reader);
}
}
bool Read(IDataReader reader)
{
while (reader.Read)
{
T item = default(T); //Here be the problem
if (item.Read(reader))
{
this.Add(item.Guid, item);
}
}
return true;
}
}
public class ExampleObject : DataItem, ILoadable
{
bool Read(IDataReader reader)
{
_var1 = reader.getString(0);
_var2 = reader.getString(1);
_var3 = reader.getString(2);
return true;
}
}
【问题讨论】:
标签: c# generics collections