方法中的new()

use*_*794 4 c# generics

有这些课程:

public interface IDbContextFactory
{
    DbContext GetContext();
}

public class Repo<T> : IRepo<T> where T : Entity, new()
{
    protected readonly DbContext c;
}

public Repo(IDbContextFactory f)
{
    c = f.GetContext();
}
Run Code Online (Sandbox Code Playgroud)

关键字new()(in class Repo<T>)有什么作用?

Dav*_*d M 11

这意味着该类型T必须公开一个公共的,默认的(即无参数)构造函数.也就是说,您将能够构造一个Twith 的实例new T().它也可以暴露其他构造函数,但是这个通用约束使默认值成为必需的.