创建C#通用类的实例

jp2*_*ode 5 c# generics visual-studio-2010

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

我有一个名为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
  }

}
Run Code Online (Sandbox Code Playgroud)

VS2010给出的错误是:

无效的标记'('在类,结构或接口成员声明中

我试过创建没有括号的构造函数,但这也没用.

当我搜索时,我似乎能够返回的是创建我的泛型类型的实例的方法T.这很容易找到怎么做!

MSDN的C#Generics简介似乎也没有涵盖这一点.

Pau*_*ane 8

你不应该在构造函数上有尖括号(<>).

public class DAL_Base<T> where T : IDisposable, new()
{
    public DAL_Base()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)


Fre*_*örk 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
  }

}
Run Code Online (Sandbox Code Playgroud)

由于您已使用type参数修饰了类本身,因此构造函数中提供了类型:

  public DAL_Base() {
     var listOfObjects = new List<T>();
  }
Run Code Online (Sandbox Code Playgroud)