c# - 错误:“T”必须是具有公共无参数构造函数的非抽象类型
问题描述
我创建了新的 .net core 2.1 项目。我创建了我的类,如下所示。但是,我在MyRepos.cs
.
“MyDbContext”必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法“UnitOfWork”中将其用作参数“TContext”
UnitOfWork.cs
public class UnitOfWork<TContext> : IUnitOfWork<TContext> where TContext : DbContext, new()
{ }
IUnitOfWork.cs
public interface IUnitOfWork<U> where U : DbContext
{ }
MyRepos.cs
public class MyRepos : UnitOfWork<MyDbContext>, IMyRepos
{ }
IMyRepos.cs
public interface IMyRepos : IUnitOfWork<MyDbContext>
{ }
MyDbContext.cs
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions options) : base(GetOptions())
{ }
public static DbContextOptions GetOptions()
{
return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), "myConnectionString").Options;
}
}
解决方案
如果您将无参数构造函数添加到MyDbContext
,我认为这应该可以解决问题。
这就是new()
约束的含义。
推荐阅读
- python - 如何在其生命周期的早期从 Generic[T] 实例访问 T?
- android - 有没有办法在通过谷歌云平台运行的 Windows Server 2019 上启用 VT-X
- visual-studio-code - Visual Studio“创建可折叠区域(Ctrl + M + H)”在VS Code中等效?
- javascript - 如何在 redux-observable 上进行 PUT 和 DELETE
- angular - 仅从 Angular 2+ 将特殊字符粘贴到文本框中时修剪特殊字符
- javascript - 如何防止反应日期 SingleDatePicker 打开焦点?
- swift - 模拟 URLSession 以返回一个模拟的 URLSessionDataTask
- c# - LINQ - 从嵌套列表中获取值的总数并保存在父列表中
- python - 为 mip 工具 python 写“存在”或“任何”约束
- machine-learning - 基于决策树的模型可以预测未来吗?