我无法让基本 DI 在我的核心 3.1 项目中工作。我的类有一个无参数构造函数,但在调用控制器方法时出现此错误:无法创建类型为“NRA_Courses.Interfaces.ICourseRunner”的实例。模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数。请注意,我什至添加了一个空构造函数以使其显式。我忽略了什么?
public interface ICourseRunner
{
void StartCourse();
void PauseCourse();
public ICourse Course { get; set; }
public IStudent Student { get; set; }
}
// Implementing class
public class CourseRunner : ICourseRunner
{
public ICourse Course { get; set; }
public IStudent Student { get; set; }
private Timer _timer => new Timer();
private DateTime _timeStarted;
private TimeSpan _timeRunAfterPauses;
public CourseRunner()
{}
public void StartCourse()
{
// implemented
}
public void PauseCourse()
{
// implemented
}
private void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
// implemented
}
}
// Method in a controller where I want ICourseRunner injected
public void StartCourseTimer(CourseList courseStarted, ICourseRunner courseRunner)
{ ...}
额外的问题,为什么我不能将日志记录注入这样的简单类?此代码在我尝试执行“= new Student()”的行上导致编译错误,因为 Student 不包含采用 0 个参数的构造函数。我认为这是另一个gimmee:
public class Student : IStudent
{
...
private readonly ILogger<Student> _logger;
public Student(ILogger<Student> logger)
{
_logger = logger;
}
...
}
非常感谢!我花了时间研究,只是因为截止日期紧迫才问。