创建C#通用类的实例

时间:2013-02-13 17:43:51

标签: c# visual-studio-2010 generics

  

标题可能措辞错误,所以请告诉我正确的用语。

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

3 个答案:

答案 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 :)

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