5

标题可能措辞不正确,所以请告诉我正确的术语。

我有一个名为DAL_Base的基类,它接受泛型类型T。该类型T来自我们业务对象层中的许多类,每个类都有一个对应的数据访问层。

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似乎也没有涵盖这一点。

4

3 回答 3

8

构造函数上不应有尖括号 ( <and >)。

public class DAL_Base<T> where T : IDisposable, new()
{
    public DAL_Base()
    {
    }
}
于 2013-02-13T17:45:56.613 回答
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
  }

}

由于您已经使用类型参数修饰了类本身,因此该类型在构造函数中可用:

  public DAL_Base() {
     var listOfObjects = new List<T>();
  }
于 2013-02-13T17:46:01.710 回答
4

public DAL_Base() { // <= NO ERROR HERE :)

类是通用的,构造函数不是。您试图向构造函数添加一个额外的泛型参数,但它不能拥有。

于 2013-02-13T17:46:34.867 回答