C# ASP.NET核心服务注册错误
我在项目模型中有以下课程:C# ASP.NET核心服务注册错误,c#,asp.net-core,C#,Asp.net Core,我在项目模型中有以下课程: public interface IUserService { IEnumerable<ApplicationUser> GetUsers(string FirstName = null); ApplicationUser GetUserById(string Id); ApplicationUser GetUserByUsername(string Username); void CreateUser(Applicatio
public interface IUserService
{
IEnumerable<ApplicationUser> GetUsers(string FirstName = null);
ApplicationUser GetUserById(string Id);
ApplicationUser GetUserByUsername(string Username);
void CreateUser(ApplicationUser User);
void SaveUser();
}
public class UserService : IUserService
{
private readonly IUserRepository usersRepository;
private readonly IUnitOfWork unitOfWork;
public UserService(IUserRepository usersRepository, IUnitOfWork unitOfWork)
{
this.usersRepository = usersRepository;
this.unitOfWork = unitOfWork;
}
#region Members
public void CreateUser(ApplicationUser User)
{
throw new NotImplementedException();
}
public ApplicationUser GetUserById(string Id)
{
var user = usersRepository.GetUserById(Id);
return user;
}
public ApplicationUser GetUserByUsername(string Username)
{
var user = usersRepository.GetUserByUsername(Username);
return user;
}
public IEnumerable<ApplicationUser> GetUsers(string FirstName = null)
{
if (string.IsNullOrEmpty(FirstName))
{
return usersRepository.GetAll();
}
return usersRepository.GetAll()
.Where(c => c.Profile.FirstName == FirstName);
}
public void SaveUser()
{
unitOfWork.Commit();
}
#endregion
}
就像我上面说的,这是一个ASP.NET内核,具有完整的.NET框架。有什么想法吗?您必须在服务集合中注册您希望注入到类构造函数中的所有内容。据我所知:
public UserService(IUserRepository usersRepository, IUnitOfWork unitOfWork)
{
this.usersRepository = usersRepository;
this.unitOfWork = unitOfWork;
}
您希望IUserRepository和IUnitOfWork将自动解析和注入,因此它们必须注册到。如果UnitOfWork要求注入构造函数中的IDbFactory,则还必须在服务集合中注册它。否则依赖项注入框架将无法解决此问题。IUnitOfWork和IUserRepository是否也已在您的服务集合中注册?就我所见,这两个是UserService中所必需的。我没有在Startup.cs文件中注册它们。我应该全部注册吗?
InvalidOperationException: Unable to resolve service for type 'Data.Repositories.Identity.IUserRepository' while attempting to activate 'Service.Identity.UserService'.
public UserService(IUserRepository usersRepository, IUnitOfWork unitOfWork)
{
this.usersRepository = usersRepository;
this.unitOfWork = unitOfWork;
}