gpt4 book ai didi

c# - 从通用类型加载通用集合

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:22 24 4
gpt4 key购买 nike

我有以下代码,我试图在其中为我的 DAL 中的对象创建一个通用集合(只是一个练习,而不是实际的生产代码)。我的问题是我想使用传入的 Read 方法的类型(它是类实现的接口(interface)的一部分)。

我无法创建 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;
}
}

最佳答案

你能不能在集合持有的类型上没有默认构造函数并将 new() 指令添加到 where T : 指令?

public class ItemDictionary<T> where T : ILoadable, DataItem, new()

然后:-

    T item = new T();

关于c# - 从通用类型加载通用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com