使用StructureMap设置依赖注入

时间:2018-01-22 19:37:44

标签: c# asp.net dependency-injection asp.net-mvc-5 structuremap

目前我正在尝试使用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;
    }
}

感谢您花时间阅读本文,如果有任何关于如何解决问题的建议非常感谢:)

0 个答案:

没有答案