我在尝试编写通用方法以从 Sterling 数据库保存和加载数据时遇到困难。
这是我的保存方法:
public static void SaveList<T>(List<T> listToSave)
{
foreach (T listItem in listToSave)
{
DatabaseInstance.Save(listItem);
}
}
我在保存下看到一条波浪形的红线和一个错误“The Type T must be a reference type to use it as parameter T”
这是我的加载方法:
public static List<T> LoadList<T>()
{
List<T> list = (from index in DatabaseInstance.Query<T, int>() select index.Key).ToList();
return list;
}
我得到了同样的错误。
有什么想法吗?
干杯
史蒂夫
更新:
我按照建议添加了一个 where T : class 并得到了一个错误:
Type T 必须有一个公共(public)的无参数构造函数才能将其用作参数
按照 Bryan 提供的链接中的说明,我在最后添加了 new(),现在一切正常。
最佳答案
你需要一个 generic type constraint根据您的定义:
public static void SaveList<T>(List<T> listToSave) where T : class
{
foreach (T listItem in listToSave)
{
DatabaseInstance.Save(listItem);
}
}
public static List<T> LoadList<T>() where T : class
{
List<T> list = (from index in DatabaseInstance.Query<T, int>() select index.Key).ToList();
return list;
}
关于C# 泛型和推断类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989560/