目前我正在尝试使用StructureMap为我的MVC 5项目设置依赖注入。
按照设置模式的设置模式的说明,当我尝试使用路径前缀调用控制器时,它永远不会失败,构造函数永远不会被命中,因此对象永远不会被初始化,所以程序一直说明对象需要初始化。在此问题之前,如果没有无参数构造函数,程序将无法编译,但是当我添加无参数构造函数时,我在控制器中使用的Interface对象为null。
我遵循框架所需的命名约定,因此对象应该由StructureMap提供的默认方法选取,并在 DefaultRegistry.cs 中初始化,这是预构建的在Nuget包中安装StructerMap时。
使用存储库设计模式的类的格式如下:
控制器类:
[RoutePrefix("api/data")]
public class TrialController : Controller
{
private readonly ITeacherService _teacherService;
public TrialController(ITeacherService teacherService)
{
_teacherService = teacherService;
}
[Route("trial")]
[HttpGet]
public void Get()
{
_teacherService.GetTeacher();
}
}
服务类
public interface ITeacherService
{
void GetTeacher();
}
public class TeacherService : ITeacherService
{
public ITeacherRepository _teacherRepository;
public TeacherService(ITeacherRepository teacherRepository)
{
_teacherRepository = teacherRepository;
}
public void GetTeacher()
{
_teacherRepository.GetTeacher();
}
}
存储库类
public interface ITeacherRepository
{
bool GetTeacher();
}
public class TeacherRepository : ITeacherRepository
{
public readonly ITeacherRepository _teacherRepository;
public TeacherRepository(ITeacherRepository teacherRepository)
{
_teacherRepository = teacherRepository;
}
public bool GetTeacher()
{
return true;
}
}
感谢您花时间阅读本文,如果有任何关于如何解决问题的建议非常感谢:)