标题可能措辞错误,所以请告诉我正确的用语。
我有一个名为 DAL_Base 的基类,它接受泛型类型T
。类型T
来自我们的Business Objects层中的许多类,并且每个类都有相应的数据访问层。
DAL_Base 接受允许我指定存储过程名称和参数的参数,用于调用选择,插入和更新记录的方法。
我目前似乎坚持的是,我似乎无法找到一种方法来实例化我的 DAL_Base 的新实例,这需要初始化各种变量。
部分列表:
public class DAL_Base<T> where T : IDisposable, new() {
public DAL_Base<T>() { // <= ERROR HERE
// initialize items that will be used in all derived classes
}
}
VS2010给出的错误是:
无效的令牌'('在类,结构或接口成员声明中
我尝试过创建没有括号的构造函数,但这也没用。
当我搜索时,我似乎能够返回的是创建我的泛型类型T
的实例的方法。这很容易找到怎么做!
MSDN的An Introduction to C# Generics似乎也没有涵盖这一点。
答案 0 :(得分:8)
你不应该在构造函数上使用尖括号(<
和>
)。
public class DAL_Base<T> where T : IDisposable, new()
{
public DAL_Base()
{
}
}
答案 1 :(得分:6)
您的构造函数中不应该包含泛型类型参数:
public class DAL_Base<T> where T : IDisposable, new() {
public DAL_Base() { // <= this should work
// initialize items that will be used in all derived classes
}
}
由于您已使用type参数修饰了类本身,因此该类型在构造函数中可用:
public DAL_Base() {
var listOfObjects = new List<T>();
}
答案 2 :(得分:4)
public DAL_Base() { // <= NO ERROR HERE :)
该类是通用的,构造函数不是。您试图向构造函数添加一个额外的泛型参数,它不能拥有。