我正在读这篇文章:
https://docs.asp.net/en/latest/tutorials/first-web-api.html
他们说。你必须把这个:
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using TodoApi.Models;
namespace TodoApi.Controllers
{
[Route("api/[controller]")]
public class TodoController : Controller
{
public TodoController(ITodoRepository todoItems)
{
TodoItems = todoItems;
}
}
}
但TodoItems
在哪里宣布?
我有什么不对吗?或者这篇文章有误吗?
因为如果我把它放在文件中:
public ITodoRepository TodoItems { get; private set; }
错误消失了。但这是对的吗?
答案 0 :(得分:1)
这可能是错误的。你应该声明为:
public class TodoController : Controller
{
private readonly ITodoRepository TodoItems;
public TodoController(ITodoRepository todoItems)
{
TodoItems = todoItems;
}
}
这是构造函数使用dependency injection。
所以,我认为将TodoItems
声明为public
属性并不是一个好主意。它应该是仅在构造函数中初始化的private readonly
字段。在其他情况下,如果您要使用继承,则可能会将其声明为protected
。