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;
}