我正在尝试创建一个新的.NET Core API,其中包含通用的存储库和服务,每个类型都有其自己的接口和相应的实现。我创建了一个通用的存储库和服务结构,但是我似乎无法正确地在
我有一个名为
我有一个名为
startup.cs
中进行注册,或者我做错了其他事情。任何帮助都将不胜感激!我有一个名为
IRepository<T>
的通用存储库,已正确注册,在我的控制器中,这个存储库按预期工作。我有一个名为
UserService
的服务,它从Service<T, IUserrepository>
继承。
Service<T, R>
实现IService<T, R>
,其中T是类型,R是IRepository<T>
。services.AddScoped(typeof(IUserService), typeof(UserService));
会创建以下错误:
InvalidCastException:无法将类型为API.Services.UserService的对象转换为类型API.Interfaces.IUserService。
services.AddScoped(typeof(IService<User, IRepository<User>>), typeof(UserService));
产生以下错误:
InvalidOperationException:尝试激活API.Controllers.UserController时,无法解析类型为API.Interfaces.IUserService的服务。
IService
public interface IService<T, R>
where T : BaseEntity
where R : IRepository<T>
{}
用户服务接口
public interface IUserService : IService<User, IUserRepository> {}
用户服务
public UserService(
IRepository<User> userRepository,
IOptions<AppSettings> appSettings)
: base(userRepository, appSettings)
{}
基础控制器
public class BaseController<T, Y, Z> : ControllerBase
where T : BaseEntity
where Y : IService<T, Z>
where Z : IRepository<T>
{
public readonly IRepository<T> TypeRepository;
public readonly IService<T, Z> TypeService;
public BaseController(
IRepository<T> injectedRepository,
IService<T, Z> injectedService)
{
TypeRepository = injectedRepository;
TypeService = injectedService as IService<T, Z>;
}
}
Startup.cs
services.AddScoped(typeof(IUserService), typeof(UserService));
我在 Startup.cs 中尝试过的内容
services.AddScoped(typeof(IService<User, IRepository<User>>), typeof(UserService));
services.AddScoped(typeof(IService<User, IRepository<User>>), typeof(Service<User, IRepository<User>>));
services.AddScoped<UserService>();
services.AddScoped(typeof(IUserService), typeof(UserService));
我原以为注册将是正确的,因为没有错误提示,但当我运行解决方案并发送请求时,我遇到了上述错误的500个响应。请问有人能指出我做错了什么吗?很明显我对这里非常重要的东西有所误解。提前感谢!
UserService
实现了该接口吗?internal class UserService : IUserService
- Silvermindpublic class UserService : Service<User, IUserRepository>
- user3661574UserService
没有实现IUserService
接口? - Vidmantas BlazeviciusInvalidOperationException: Unable to resolve service for type...
。 - user3661574