解决 注册服务可能存在问题?

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
我只是第一次创建服务,每当我尝试进入正在使用的控制器的视图时,我的应用程序就会出错。

人员服务接口:
C#:
    public interface IPeopleService
    {
        List<Person> GetPeople();
    }

服务本身:
C#:
    public class PeopleService : IPeopleService
    {
        private readonly ApplicationDbContext _context;

        public PeopleService(ApplicationDbContext context)
        {
            _context = context;
        }

public List<Person> GetPeople() => _context.People.ToList();
    }

PeopleController:
C#:
    public class PeopleController : Controller
    {
private readonly PeopleService _peopleService;

        public PeopleController(PeopleService peopleService)
        {
            _peopleService = peopleService;
        }

        public ActionResult Index()
        {
            var people = _peopleService.GetPeople();
            return View(people);
        }
}

启动文件:
C#:
services.AddTransient<IPeopleService, PeopleService>();

我收到的错误是:
InvalidOperationException:无法解析类型为'的服务建筑项目.Services.PeopleService”,同时尝试激活“ architectureProject.Controllers.PeopleController”。

我必须连接不正确。

我的猜测是,它与Startup没有任何关系,因为当我运行程序时,它实际上可以构建并显示我的主页。我还有另一个模型,视图和控制器,我仍然可以进入那些视图。

当我尝试转到人脉视图的索引时,即发生错误。
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,530
地点
弗吉尼亚州切萨皮克
编程经验
10+
您确定要运行刚刚编写的代码吗?这一段代码如何成功编译?
C#:
public PeopleController(PeopleService _peopleService)
{
    _peopleService = peopleService;
}

where is peopleService defined?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
您确定要运行刚刚编写的代码吗?这一段代码如何成功编译?
C#:
public PeopleController(PeopleService _peopleService)
{
    _peopleService = peopleService;
}

where is peopleService defined?
我怀疑参数声明中不应包含下划线,但正如您所说的那样,看起来它不应按原样编译。
 

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
我怀疑参数声明中不应包含下划线,但正如您所说的那样,看起来它不应按原样编译。
是的,很抱歉,参数中实际上没有下划线。

所以说命令应该是错误的
1.在连接到特定服务接口和服务类的启动文件中注入服务
2.创建一个从接口继承的服务,然后运行所需的方法。 (从ApplicationDb上下文运行信息)
3.使用控制器上的DI连接到服务类别
4.引用服务类中的方法以显示数据库中的信息

模型看起来像这样:
C#:
public class People
{
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

它在表中确实有信息
 
Last edited:

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
弄清楚了。这是一个语法问题。
控制器错误

本来应该:
C#:
public PeopleController(IPeopleService _peopleService)
{
    _peopleService = peopleService;
}

我指的是实际的服务,而不是接口
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,530
地点
弗吉尼亚州切萨皮克
编程经验
10+
Still looks kind of wrong... You seem to be overwriting your incoming _peopleService with some peopleService that looks to be undefined.
 

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
C#:
private readonly IPeopleService _peopleService;

public PeopleController(IPeopleService peopleService)
{
    _peopleService = peopleService;
}
抱歉,复制并粘贴。这是应该的
 
最佳 底部