[英]InvalidOperationException: Unable to resolve service for type 'Repository.UnitOfWork'
[英]InvalidOperationException: Unable to resolve service for type for generic repository
通用存储库抛出以下错误。 nvalidOperationException:尝试激活“Controllers.HomeController”时,无法解析“Core.Repository.MongoDb.MongoRepository`1[Controllers.HomeController+TestUser]”类型的服务。
以下是在尝试执行依赖项注入时抛出错误的通用存储库。
public interface IEntity
{
string Id { get; set; }
DateTime CreatedDate { get; set; }
}
public interface IRepository<T> where T: IEntity
{
/// <summary>
/// Inserts the specified entity.
/// </summary>
/// <param name="entity">The entity.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns></returns>
Task<T> Insert(T entity, InsertOneOptions options, CancellationToken cancellationToken = default(CancellationToken));
}
public class MongoRepository<T> : IRepository<T> where T : IEntity
{
....
}
public class Entity: IEntity
{
public string Id { get; set; }
public DateTime CreatedDate { get; set; }
....
}
public class HomeController : Controller
{
private IRepository<TestUser> _repository;
public class TestUser : Entity
{
public string Name { get; set; }
}
public HomeController(MongoRepository<TestUser> repository)
{
this._repository = repository;
}
public IActionResult Index()
{
var result=_repository.GetAll();
return View(result);
}
}
Startup.cs 类注册服务是这样的。
services.AddScoped(typeof(IRepository<>), typeof(MongoRepository<>));
基本上,它甚至不会在自己抛出错误之前进入 Home 控制器。 当我尝试在没有 DI 的情况下实例化时,存储库无法确定为什么它在 DI 中失败。
你正在注射
MongoRepository<TestUser> repository
或者你必须使用接口,这是DI的原理。
将控制器的构造函数替换为以下内容
IRepository<TestUser> repository
它会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.